链表的逆置

链表是一个特殊的数据结构,其中每个节点包含自己的数据以及下一个值的引用(指针),链表的逆置就是指将链表下一个值的引用(指针)调换,如下图所示:

第一步 构造链表

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 iin 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 heador 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)
原文地址:https://www.cnblogs.com/xiangwang1/p/15071563.html