📌  相关文章
📜  用于对给定链表的元素进行成对交换的Python程序(1)

📅  最后修改于: 2023-12-03 14:56:20.597000             🧑  作者: Mango

用于对给定链表的元素进行成对交换的Python程序

简介

这是一个用于对给定链表的元素进行成对交换的Python程序。它将链表中相邻的两个节点进行交换,将第一个节点作为交换后的第二个节点的前置节点,返回交换后的链表。

实现思路
  1. 首先,我们需要定义一个节点类来表示链表的节点。
  2. 然后,我们创建一个链表并初始化它。
  3. 遍历链表中的每个节点,对相邻的两个节点进行交换。
  4. 返回交换后的链表。
代码实现
# 节点类定义
class ListNode:
    def __init__(self, value=0, next=None):
        self.value = value
        self.next = next

# 成对交换链表中的元素
def swap_pairs(head):
    # 如果链表为空或只有一个节点,则直接返回
    if not head or not head.next:
        return head

    # 新建一个哑节点dummy并将其指向头节点,以便处理第一对节点
    dummy = ListNode(0)
    dummy.next = head
    prev_node = dummy

    while head and head.next:
        # 保存下一对节点的头节点
        next_pair = head.next.next

        # 将第一个节点和第二个节点进行交换
        temp = head.next
        head.next = next_pair
        temp.next = head

        # 更新前置节点的指针
        prev_node.next = temp

        # 更新头节点和前置节点的指针
        head = next_pair
        prev_node = temp.next

    return dummy.next

# 测试代码
if __name__ == "__main__":
    # 创建一个测试链表: 1->2->3->4->None
    head = ListNode(1)
    head.next = ListNode(2)
    head.next.next = ListNode(3)
    head.next.next.next = ListNode(4)

    print("原始链表:")
    current = head
    while current:
        print(current.value, end=" ")
        current = current.next

    # 成对交换链表的元素
    new_head = swap_pairs(head)

    print("\n交换后的链表:")
    current = new_head
    while current:
        print(current.value, end=" ")
        current = current.next
运行结果
原始链表:
1 2 3 4 
交换后的链表:
2 1 4 3 

以上就是用于对给定链表的元素进行成对交换的Python程序的介绍和示例代码。你可以根据实际情况使用该程序对链表中的元素进行成对交换。