题目:
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
输入:head = [1,2,3,4] 输出:[2,1,4,3]示例 2:
输入:head = [] 输出:[]示例 3:
输入:head = [1] 输出:[1]
解题思路:
首先定义一个指针p指向链表的头部,然后让指针curr成为链表头节点。然后用循环进行节点交换,在循环中,定义first,second指向第一、第二个节点,然后进行交换操作,交换完成后使指针后移,继续交换。最后返回更新后的链表。
程序代码:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def swapPairs(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
p=ListNode(0)
p.next=head
curr=p
while curr.next and curr.next.next:
first=curr.next
second=curr.next.next
curr.next=second
first.next=second.next
second.next=first
curr=first
return p.next
运行结果: