gpt4 book ai didi

python - 第二次添加到列表后,我的 Python 链表实现崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:53:23 25 4
gpt4 key购买 nike

class Node:
def __init__(self, data = None, next = None):
self.data = data
self.next = next


class LinkedList(Node):
def __init__(self, l_size = 0, head = None, tail = None):
Node.__init__(self)
self.l_size = 0
self.head = head
self.tail = tail

def add(self, data):
n = Node(data, None)
if(self.l_size == 0):
self.head.next = n
self.head.data = n.data
else:
self.tail.next = n
self.tail.data = n.data
n = n.next
print(n)
self.tail = n
self.l_size += 1
return True

l = LinkedList()
l.add(7)
l.add(8)
l.add(2)

我只是想实现 (h)-> 7 -> 8 -> 2 <- (l)其中(h)和(l)分别是头指针和尾指针。我实现这个 LL 的方式基本上是头指针和尾指针,节点自己链接在一起,这就是我将节点设为父类(super class)的原因。

最佳答案

它应该在第一次添加时崩溃 - 当您初始化您的 LinkedList 时,您将 self.head 设置为 None(默认设置)争论)。然后当您调用 add() 方法时,由于 self.l_size0 您尝试设置 self.head.next 到创建的节点 - 但是因为它设置为 None 你会得到一个 AttributeError

当您的 LinkedList 为空时,您应该将其 tailhead 属性都设置为第一个添加的元素,因为在列表中length 1 head 和 tail 是同一个元素。

关于python - 第二次添加到列表后,我的 Python 链表实现崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44386174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com