Given a linked list, swap every two adjacent nodes and return its head.


Given 1->2->3->4, you should return the list as 2->1->4->3.


  • Your algorithm should use only constant extra space.
  • You may not modify the values in the list’s nodes, only nodes itself may be changed.


# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
# = None

class Solution:
    def swapPairs(self, head):
        :type head: ListNode
        :rtype: ListNode
        if head is None or is None:
            return head

        res =
        p = head
        prev = None
        while p is not None and is not None:
            one, two, three = p,,
   = three
   = one
            if prev is not None:
       = two
            prev = one
            p = three

        return res