【发布时间】:2012-10-26 16:34:38
【问题描述】:
我正在尝试在 python 中创建一个链表类(我知道毫无意义,但这是一个学习练习),如果我尝试删除第一个元素,我编写的删除节点的方法不起作用链表。如果要删除的节点位于链表中的任何其他位置,则该方法可以正常工作。有人可以告诉我我哪里出错了吗?
到目前为止,这是我的代码:
class Node:
def __init__(self, data=None, next=None):
self.data = data
self.next = next
def __repr__(self):
return repr(self.data)
def printNodes(self):
while self:
print self.data
self = self.next
def removeNode(self, datum):
"""removes node from linked list"""
if self.data == datum:
return self.next
while self.next:
if self.next.data == datum:
self.next = self.next.next
return self
self = self.next
【问题讨论】:
-
作为一个例子,假设我有一个链表 1,2,3,4。如果我调用 removeNode(1),结果是 1,2,3,4。如果我调用 removeNode(3),结果是 1,2,4。
-
您是否将
removeNode的结果分配回去?换句话说,你是my_linked_list.removeNode(x)还是my_linked_list = my_linked_list.removeNode(x)? -
那你会想要我回答的后半部分。
-
仅供参考:在您接受后,我修复了我的答案中的一些错误。
-
当您执行 obj.method() 而不是 obj = obj.method() 时,返回值是一种不好的形式吗?
标签: python oop linked-list