Python对链表进行反转操作的代码

2022-05-03 00:00:00 代码 链表 反转

这段Python代码通过给定指向链表头节点的指针,目标是对链表进行反转操作。程序通过更改节点之间的链接来反转列表。
例子:
输入: Head of following linked list
1->2->3->4->NULL
输出 : Linked list should be changed to,
4->3->2->1->NULL

输入 : Head of following linked list
1->2->3->4->5->NULL
输出 : Linked list should be changed to,
5->4->3->2->1->NULL

输入 : NULL
输出 : NULL

输入 : 1->NULL
输出 : 1->NULL

迭代法:

"""
皮蛋编程(https://www.pidancode.com)
创建日期:2022/4/7
功能描述:Python对链表进行反转操作的代码 
时间复杂度 : O(n)
"""


class Node:

    # 初始化
    def __init__(self, data):
        self.data = data
        self.next = None


class LinkedList:

    # 初始化head
    def __init__(self):
        self.head = None

    # 反转链表
    def reverse(self):
        prev = None
        current = self.head
        while (current is not None):
            next = current.next
            current.next = prev
            prev = current
            current = next
        self.head = prev

    # 在头部插入新的节点
    def push(self, new_data):
        new_node = Node(new_data)
        new_node.next = self.head
        self.head = new_node

    # 打印链表
    def printList(self):
        temp = self.head
        while (temp):
            print(temp.data, end=" ")
            temp = temp.next


# 测试代码
llist = LinkedList()
llist.push(20)
llist.push(4)
llist.push(15)
llist.push(85)

print("提供的链表")
llist.printList()
llist.reverse()
print("\n反转后的链表")
llist.printList()

输出结果如下:
提供的链表
85 15 4 20
反转后的链表
20 4 15 85

代码在python3.9下测试通过

相关文章