如何使用Python实现链表的交换相邻节点(Swap Nodes in Pairs)
链表是一种常见的数据结构,Python可以通过定义节点类和链表类来实现链表的操作。本文将介绍如何使用Python实现链表的交换相邻节点,具体实现步骤如下:
- 定义节点类,包含data和next两个属性,其中data表示节点的值,next表示指向下一个节点的指针。
class Node: def __init__(self, data): self.data = data self.next = None
- 定义链表类,包含head和tail两个属性,其中head表示链表的头节点,tail表示链表的尾节点。
class LinkedList: def __init__(self): self.head = None self.tail = None
- 实现添加节点方法,将新节点添加到链表的末尾。
def addNode(self, data): new_node = Node(data) if self.head == None: self.head = new_node self.tail = new_node else: self.tail.next = new_node self.tail = new_node
- 实现打印链表方法,用于测试链表是否正确。
def printList(self): current = self.head while current: print(current.data,end=' ') current = current.next
- 实现交换相邻节点方法,遍历链表并交换相邻的节点。
def swapNodes(self): current = self.head while current and current.next: current.data, current.next.data = current.next.data, current.data current = current.next.next
- 创建链表对象并添加节点,调用交换相邻节点方法并打印结果。
linked_list = LinkedList() linked_list.addNode('p') linked_list.addNode('i') linked_list.addNode('d') linked_list.addNode('a') linked_list.addNode('n') linked_list.addNode('c') linked_list.addNode('o') linked_list.addNode('d') linked_list.addNode('e') print('Original linked list:') linked_list.printList() linked_list.swapNodes() print('\nLinked list after swapping adjacent nodes:') linked_list.printList()
最终输出结果为:
Original linked list: p i d a n c o d e Linked list after swapping adjacent nodes: i p a d c n o e d
完整代码如下:
class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None self.tail = None def addNode(self, data): new_node = Node(data) if self.head == None: self.head = new_node self.tail = new_node else: self.tail.next = new_node self.tail = new_node def printList(self): current = self.head while current: print(current.data,end=' ') current = current.next def swapNodes(self): current = self.head while current and current.next: current.data, current.next.data = current.next.data, current.data current = current.next.next linked_list = LinkedList() linked_list.addNode('p') linked_list.addNode('i') linked_list.addNode('d') linked_list.addNode('a') linked_list.addNode('n') linked_list.addNode('c') linked_list.addNode('o') linked_list.addNode('d') linked_list.addNode('e') print('Original linked list:') linked_list.printList() linked_list.swapNodes() print('\nLinked list after swapping adjacent nodes:') linked_list.printList()
相关文章