链表是一个特殊的数据结构,其中每个节点包含自己的数据以及下一个值的引用(指针),链表的逆置就是指将链表下一个值的引用(指针)调换,如下图所示:
第一步 构造链表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class Node( object ):
def __init__( self , value, next ):
self .value = value
self . next = next
head = Node( '头' , None )
last = head
for i in range ( 5 ):
node = Node( 'v%s' % i, None )
last. next = node
last = node
# ######### 查看链表关系 ########## print ( '原始链表信息为:' )
print (head.value)
print (head. next .value)
print (head. next . next .value)
print (head. next . next . next .value)
print (head. next . next . next . next .value)
print (head. next . next . next . next . next .value)
|
第二步 链表逆置
实现思路:
实现代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
def reverse_linked_list(head):
"""
链表逆置
:param head:
:return:
"""
if not head or not head. next :
return head
prev_node = None
current_node = head
next_node = head. next
while True :
current_node. next = prev_node
if not next_node:
break
prev_node = current_node
current_node = next_node
next_node = current_node. next
return current_node
new_head = reverse_linked_list(head)
print ( '逆置之后的链表' )
print (new_head.value)
print (new_head. next .value)
print (new_head. next . next .value)
print (new_head. next . next . next .value)
print (new_head. next . next . next . next .value)
print (new_head. next . next . next . next . next .value)
|