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

如何自动化构建LinkedList?以1->2->3->4->5链表为例

如何自动化构建LinkedList?

给定链表结构1->2->3->4->5,以及ListNode类定义:

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

目前手动构建的代码是:

head = ListNode(1)
node1 = ListNode(2)
node2 = ListNode(3)
node3 = ListNode(4)
node4 = ListNode(5)
head.next = node1
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = None

想知道能不能自动化这个构建过程,比如用循环来实现类似伪代码的效果:

for i in range(1, 6):
    node(i-1) = ListNode(i)

当然可以!手动逐个创建节点再链接确实效率很低,尤其是链表较长的时候。我们完全可以用循环来自动化这个过程,甚至封装成通用函数来复用。

方法一:直接用循环构建

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

# 自动化构建目标链表
values = [1, 2, 3, 4, 5]
if not values:
    head = None
else:
    head = ListNode(values[0])
    current = head
    for val in values[1:]:
        current.next = ListNode(val)
        current = current.next
    # 最后一个节点的next默认是None,无需额外设置

方法二:封装成通用构建函数

如果之后需要频繁构建不同的链表,把逻辑封装成函数会更方便:

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

def build_linked_list(values):
    """根据输入的数值列表构建对应的链表"""
    if not values:
        return None
    head = ListNode(values[0])
    current = head
    for val in values[1:]:
        current.next = ListNode(val)
        current = current.next
    return head

# 使用示例:构建1->2->3->4->5的链表
head = build_linked_list([1, 2, 3, 4, 5])

核心逻辑说明

  • 先判断输入的数值列表是否为空,空列表直接返回None(对应空链表)
  • 创建链表的头节点,用列表第一个值初始化
  • 用current指针跟踪当前正在处理的节点,遍历列表剩余的每个值:
    • 为当前值创建新节点,将其设为current.next
    • 把current移动到新节点上,继续下一次循环
  • 循环结束后,整个链表的链接关系就自动建立好了,最后一个节点的next默认是None,不需要额外处理

这样不管链表长度是多少,只要把节点值按顺序放进列表,就能一键生成对应的链表了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:57:41