Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使用上一个指针创建链表?_Python 3.x_Linked List - Fatal编程技术网

Python 3.x 如何使用上一个指针创建链表?

Python 3.x 如何使用上一个指针创建链表?,python-3.x,linked-list,Python 3.x,Linked List,这个问题的灵感来自一个leetcode问题 节点定义如下: 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

这个问题的灵感来自一个leetcode问题

节点定义如下:

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。如果某件东西的输入依赖于它的输出,我们怎么能找到它的价值呢


我现在有点困惑,如果你能解释一下,我将不胜感激。谢谢

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

例如,我将
节点
更改为如下内容:

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)
然后像这样使用它:

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)