Python链表问题



我正在尝试将一个数字字符串转换为一个整数链表。出于某种原因,当我打印链表中每个值的值时,它只打印第一个值。例如:字符串";523〃;将变成链接列表:5->2->3,但它只打印第一个节点值5。有人能帮我看看我缺了什么吗?谢谢你的帮助!

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
total = "523"
root = None
curr_node = None
for digit in total:
    if root is None:
        root = ListNode(int(digit), curr_node)
    else:
        curr_node = ListNode(int(digit))
        curr_node = curr_node.next
while root:
    print(root.val)
    root = root.next

代码的问题是,为curr_node分配新值不会更改当前分配给root.nextcurr_node.nextNone值。相反,您应该保留对当前/最后一个节点本身的引用:

root = last = None
for digit in total:
    if root is None:
        root = last = ListNode(int(digit))
    else:
        last.next = last = ListNode(int(digit))

或者:创建一个类似链表的递归数据结构通常更容易,也更"简单";天然的";使用递归函数而不是循环:

def to_list(s):
    if s:
        return ListNode(int(s[0]), to_list(s[1:]))
    else:
        return None
root = to_list(total)

相关内容

  • 没有找到相关文章

最新更新