039 链表的逆置
链表是一个特殊的数据结构,其中每个节点包含自己的数据以及下一个值的引用(指针),链表的逆置就是指将链表下一个值的引用(指针)调换,如下图所示:
第一步 构造链表
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) |