Skip to content

Commit 79799b7

Browse files
committed
reverse linkedlist
1 parent eceda87 commit 79799b7

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

docs/03_链表/linked_list.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,22 @@ def clear(self):
119119
self.length = 0
120120
self.tailnode = None
121121

122+
def reverse(self):
123+
"""反转链表"""
124+
curnode = self.root.next
125+
self.tailnode = curnode
126+
prevnode = None
127+
128+
while curnode:
129+
nextnode = curnode.next
130+
curnode.next = prevnode
131+
132+
if nextnode is None:
133+
self.root.next = curnode
134+
135+
prevnode = curnode
136+
curnode = nextnode
137+
122138

123139
def test_linked_list():
124140
ll = LinkedList()
@@ -169,6 +185,16 @@ def test_linked_list_remove():
169185
ll.remove(7)
170186
print(list(ll))
171187

188+
189+
def test_linked_list_reverse():
190+
ll = LinkedList()
191+
n = 10
192+
for i in range(n):
193+
ll.append(i)
194+
ll.reverse()
195+
assert list(ll) == list(reversed(range(n)))
196+
197+
172198
def test_linked_list_append():
173199
ll = LinkedList()
174200
ll.appendleft(1)
@@ -177,5 +203,6 @@ def test_linked_list_append():
177203

178204

179205
if __name__ == '__main__':
180-
test_linked_list()
181-
test_linked_list_append()
206+
# test_linked_list()
207+
# test_linked_list_append()
208+
test_linked_list_reverse()

0 commit comments

Comments
 (0)