You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建整数单链表并拆分奇偶数值到独立奇偶链表并输出结果?

实现思路
  • 第一步:先定义单链表节点类ListNode,包含val存储整数值,next存储下一个节点的指针
  • 第二步:遍历原始链表的每个节点,判断节点值的奇偶性:
    • 若为奇数,尾插至奇数链表
    • 若为偶数,尾插至偶数链表
  • 第三步:拆分完成后需要把奇数链表、偶数链表的尾节点的next置为None,避免出现环或者残留原始链表的后续节点
  • 第四步:分别遍历两个结果链表,打印输出所有节点值
可运行参考代码(Python实现)
# 定义单链表节点类
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

# 拆分奇偶链表的核心函数
def split_odd_even(head: ListNode) -> tuple[ListNode, ListNode]:
    # 用哑节点简化链表边界处理,不用单独判断头节点为空的情况
    odd_dummy = ListNode()
    even_dummy = ListNode()
    odd_cur = odd_dummy
    even_cur = even_dummy
    
    current = head
    while current:
        if current.val % 2 == 1:
            # 奇数节点接入奇数链表
            odd_cur.next = current
            odd_cur = odd_cur.next
        else:
            # 偶数节点接入偶数链表
            even_cur.next = current
            even_cur = even_cur.next
        current = current.next
    
    # 两个链表尾节点next置空,避免残留引用
    odd_cur.next = None
    even_cur.next = None
    
    return odd_dummy.next, even_dummy.next

# 辅助函数:打印链表所有值
def print_linked_list(head: ListNode):
    res = []
    current = head
    while current:
        res.append(str(current.val))
        current = current.next
    print(" -> ".join(res) if res else "空链表")

# 测试用例
if __name__ == "__main__":
    # 构建原始测试链表:1->2->3->4->5->6->7
    nodes = [ListNode(i) for i in range(1, 8)]
    for i in range(len(nodes)-1):
        nodes[i].next = nodes[i+1]
    original_head = nodes[0]
    
    print("原始链表:")
    print_linked_list(original_head)
    
    odd_head, even_head = split_odd_even(original_head)
    
    print("\n拆分后奇数链表:")
    print_linked_list(odd_head)
    print("\n拆分后偶数链表:")
    print_linked_list(even_head)
关键注意点
  • 用哑节点(哨兵节点)可以省去判断奇数/偶数链表是否为空的分支逻辑,代码更简洁不容易出边界错误
  • 遍历完成后必须给两个结果链表的尾节点的next赋值为None,否则如果原始链表最后一个节点是奇数,偶数链表的尾节点会仍然指向原始链表中的下一个节点,导致打印的时候出现多余节点甚至环
  • 该实现时间复杂度为O(n),n为原始链表节点总数,仅需要遍历一次原始链表;空间复杂度为O(1),所有节点都是复用原始链表的节点,没有额外创建新节点,仅用了有限的指针变量

内容的提问来源于stack exchange,提问作者jrp25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:36:03