解法一:递归法 使用递归来交换链表中的节点。
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def swapPairs(head):
if not head or not head.next:
return head
# 交换第一个节点和第二个节点
first_node = head
second_node = head.next
first_node.next = swapPairs(second_node.next)
second_node.next = first_node
return second_node解法二:迭代法 使用迭代来交换链表中的节点。
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def swapPairs(head):
dummy = ListNode(0) # 创建虚拟头节点
dummy.next = head
prev = dummy
while head and head.next:
# 要交换的两个节点
first_node = head
second_node = head.next
# 交换节点
prev.next = second_node
first_node.next = second_node.next
second_node.next = first_node
# 更新指针
prev = first_node
head = first_node.next
return dummy.next解法三:指针法 使用指针法来交换链表中的节点。
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def swapPairs(head):
dummy = ListNode(0) # 创建虚拟头节点
dummy.next = head
prev = dummy
while head and head.next:
# 要交换的两个节点
first_node = head
second_node = head.next
# 交换节点
prev.next = second_node
first_node.next = second_node.next
second_node.next = first_node
# 更新指针
prev = first_node.next
head = first_node.next.next
return dummy.next