Skip to content

Commit d578958

Browse files
committed
修正 LinkList.remove 方法没有更新 prevnode 的 bug
1 parent d074b89 commit d578958

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

docs/03_链表/linked_list.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ def remove(self, value): # O(n)
7474
del curnode
7575
self.length -= 1
7676
return 1 # 表明删除成功
77+
else:
78+
prevnode = curnode
7779
return -1 # 表明删除失败
7880

7981
def find(self, value): # O(n)
@@ -113,26 +115,27 @@ def test_linked_list():
113115
ll.append(0)
114116
ll.append(1)
115117
ll.append(2)
118+
ll.append(3)
116119

117-
assert len(ll) == 3
120+
assert len(ll) == 4
118121
assert ll.find(2) == 2
119-
assert ll.find(3) == -1
122+
assert ll.find(-1) == -1
120123

121124
assert ll.remove(0) == 1
122-
assert ll.remove(3) == -1
125+
assert ll.remove(10) == -1
126+
assert ll.remove(2) == 1
123127
assert len(ll) == 2
128+
assert list(ll) == [1, 3]
124129
assert ll.find(0) == -1
125130

126-
assert list(ll) == [1, 2]
127-
128131
ll.appendleft(0)
129-
assert list(ll) == [0, 1, 2]
132+
assert list(ll) == [0, 1, 3]
130133
assert len(ll) == 3
131134

132135
headvalue = ll.popleft()
133136
assert headvalue == 0
134137
assert len(ll) == 2
135-
assert list(ll) == [1, 2]
138+
assert list(ll) == [1, 3]
136139

137140
ll.clear()
138141
assert len(ll) == 0

docs/04_队列/queue.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,15 @@ def remove(self, value): # O(n)
6969
"""
7070
prevnode = self.root #
7171
curnode = self.root.next
72-
while curnode.next is not None:
72+
for curnode in self.iter_node():
7373
if curnode.value == value:
7474
prevnode.next = curnode.next
7575
del curnode
7676
self.length -= 1
77-
return
77+
return 1 # 表明删除成功
78+
else:
79+
prevnode = curnode
80+
return -1 # 表明删除失败
7881

7982
def find(self, value): # O(n)
8083
""" 查找一个节点,返回序号,从 0 开始

0 commit comments

Comments
 (0)