如何自动化构建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
相关产品推荐
相关产品推荐

