Open
Description
在链表的remove方法中 这行代码实现,经过测试貌似是有问题的。
def remove(self, value): # O(n)
""" 删除包含值的一个节点,将其前一个节点的 next 指向被查询节点的下一个即可
.............
if curnode is self.tailnode: # NOTE: 注意更新 tailnode
if prevnode is self.root:
self.tailnode = None
else:
self.tailnode = prevnode
del curnode
按照源代码意义,这行代码实际上是将被删除结点之后的结点都给删除了,而并非方法实现的删除单个结点。
实际测试也是如此。
比如生成链表0-->1-->2-->3-->4--->5
删除3结点
按照源代码 结果是 0-->1--->2
我这边的修改的代码是:
if prevode is self.root:
self.tailnode = None
if curnode == self.tailnode:
self.tailnode = prevode
del curnode
如果是我弄错了,还请告知解惑。
Metadata
Metadata
Assignees
Labels
No labels