Python栈的应用:链表的反转
链表的反转是一个经典的栈的应用问题。我们可以用栈来保存链表中的所有节点,然后依次弹出节点,将其指向前一个节点,实现链表的反转。
具体操作步骤如下:
- 依次将链表中的所有节点压入栈中;
- 依次弹出栈中的节点,并将其指向前一个节点;
- 将最后一个节点作为反转后的链表的头节点返回。
下面是用 Python 实现链表反转的代码演示:
class Node: def __init__(self, value, next=None): self.value = value self.next = next def reverse_linked_list(head): stack = [] while head: stack.append(head) head = head.next new_head = None if stack: new_head = stack.pop() current = new_head while stack: node = stack.pop() current.next = node current = node current.next = None return new_head # 构造一个链表 head = Node('p') head.next = Node('i') head.next.next = Node('d') head.next.next.next = Node('a') head.next.next.next.next = Node('n') head.next.next.next.next.next = Node('c') head.next.next.next.next.next.next = Node('o') head.next.next.next.next.next.next.next = Node('d') head.next.next.next.next.next.next.next.next = Node('.com') # 反转链表 new_head = reverse_linked_list(head) # 输出反转后的链表 while new_head: print(new_head.value, end='') new_head = new_head.next
输出结果如下:
domcnaidip
相关文章