class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

def create_linked_list():
    head = Node(None)
    current = head
    while True:
        data = int(input())
        if data == -1:
            break
        node = Node(data)
        current.next = node
        current = node
    return head.next

def reverse_linked_list(head):
    current = head
    prev = None
    while current:
        next_node = current.next
        current.next = prev
        prev = current
        current = next_node
    return prev

def print_linked_list(head):
    current = head
    while current:
        print(current.data, end=' ')
        current = current.next

if __name__ == '__main__':
    head = create_linked_list()
    head = reverse_linked_list(head)
    print_linked_list(head)

说明:

输入数据时,每输入一个数就创建一个新的结点,并将其插入链表末尾。

就地逆置链表的基本思路是从头结点开始遍历链表,每遍历到一个结点,就将其指向前一个结点,最终得到逆置后的链表。

输出数据时,从头结点开始遍历链表,依次输出每个结点的数据元素即可。

Python 单链表就地逆置算法实现

原文地址: https://www.cveoy.top/t/topic/nbv1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录