链表的错误实现
Wrong Implementation of LinkedList
我在使用以下代码段时遇到问题。我无法真正弄清楚为什么它不起作用,我们将不胜感激。这是一个非常非常简单的错误,我不明白:
class Node():
def __init__(self, val = 0, next_node = None):
self.val = val
self.next = next_node
def add_node(self, new_val):
temp = self
self.val = new_val
self.next = temp
if __name__ == '__main__':
u = Node(1)
u.add_node(5)
print(u.next.val)
打印 5 如果你写 u.next.next.next.val
它会一直打印 5,我想要的是 u.val = 5
, u.next.val = 1
和 u.next.next = None
如果你添加一个新节点,你永远不会检查你是否在链表的中间,你只需更改当前节点值并让 if 引用自身作为下一个节点(=> 循环自指向列表)。这没有任何意义。
您需要:
- 创建一个新节点,设置它的值并将它的
next_node
设置为你自己的self.next
- 然后将您的
self.next
设置为新节点
def add_node(self, new_val):
# self.next is either None or the remainder of your linked list
new_node = Node(new_val, self.next)
# insert as next node of yourself
self.next = new_node
您必须在 add_node
中实例化一个新的 Node
,然后将其设置为 self
的 next
。
我在使用以下代码段时遇到问题。我无法真正弄清楚为什么它不起作用,我们将不胜感激。这是一个非常非常简单的错误,我不明白:
class Node():
def __init__(self, val = 0, next_node = None):
self.val = val
self.next = next_node
def add_node(self, new_val):
temp = self
self.val = new_val
self.next = temp
if __name__ == '__main__':
u = Node(1)
u.add_node(5)
print(u.next.val)
打印 5 如果你写 u.next.next.next.val
它会一直打印 5,我想要的是 u.val = 5
, u.next.val = 1
和 u.next.next = None
如果你添加一个新节点,你永远不会检查你是否在链表的中间,你只需更改当前节点值并让 if 引用自身作为下一个节点(=> 循环自指向列表)。这没有任何意义。
您需要:
- 创建一个新节点,设置它的值并将它的
next_node
设置为你自己的self.next
- 然后将您的
self.next
设置为新节点
def add_node(self, new_val):
# self.next is either None or the remainder of your linked list
new_node = Node(new_val, self.next)
# insert as next node of yourself
self.next = new_node
您必须在 add_node
中实例化一个新的 Node
,然后将其设置为 self
的 next
。