Given a linked list, swap every two adjacent nodes and return its head.
You may not modify the values in the list's nodes, only nodes itself may be changed.
Example:
Given1->2->3->4
, you should return the list as2->1->4->3
既然是以两个为一组,就应该每次设置一个头节点,在这两个节点前。这样每一轮才方便更新指针。
尽量少设置指针,容易把自己搞混
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def swapPairs(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head or not head.next:
return head
dummy = ListNode(0)
dummy.next = head
cur = dummy
while cur.next and cur.next.next:
first=cur.next
second=cur.next.next
first.next = second.next
second.next = first
cur.next = second
cur = cur.next.next
return dummy.next