首页 > 解决方案 > 如何用前一个指针创建一个链表?

问题描述

这个问题的灵感来自一个 leetcode 问题Flatten a Multilevel Doubly Linked List

节点定义如下:

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

我的问题是如何创建一个包含上一个和下一个指针的自定义节点而不会产生循环错误。

例如,如果我想创建一个 [1->2->3] 的节点,下面是我的思考过程:

a=node(1,None,b)
b=node(2,a,c)
c=node(3,b,None)

但是,这不会导致循环错误,因为 a 由 b 定义,而 b 反过来由 a 定义,类似地对于 c,b 用于定义 c,同时 c 用于定义 b。如果某事物的输入依赖于它的输出,我们如何才能找到它的价值呢?

我现在有点困惑,如果你能对此有所了解,我将不胜感激。谢谢

标签: python-3.xlinked-list

解决方案


您需要创建第一个没有链接的节点,然后在添加相邻节点时修改链接。

例如,我会改为Node这样:

class ListNode:
  def __init__(self, val, prev=None, next=None):
    self.val = val
    self.prev = prev
    if prev is not None:
      prev.next = self
    self.next = next
    if next is not None:
      next.prev = self

然后像这样使用它:

a = ListNode(1)
b = ListNode(2, a)
c = ListNode(3, b)

推荐阅读