如何使用Python实现链表的交换相邻节点(Swap Nodes in Pairs)

2023-04-11 00:00:00 节点 如何使用 相邻

链表是一种常见的数据结构,Python可以通过定义节点类和链表类来实现链表的操作。本文将介绍如何使用Python实现链表的交换相邻节点,具体实现步骤如下:

  1. 定义节点类,包含data和next两个属性,其中data表示节点的值,next表示指向下一个节点的指针。
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None
  1. 定义链表类,包含head和tail两个属性,其中head表示链表的头节点,tail表示链表的尾节点。
class LinkedList:
    def __init__(self):
        self.head = None
        self.tail = None
  1. 实现添加节点方法,将新节点添加到链表的末尾。
    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
  1. 实现打印链表方法,用于测试链表是否正确。
    def printList(self):
        current = self.head
        while current:
            print(current.data,end=' ')
            current = current.next
  1. 实现交换相邻节点方法,遍历链表并交换相邻的节点。
    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
  1. 创建链表对象并添加节点,调用交换相邻节点方法并打印结果。
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()

相关文章