Given a linked list, swap every two adjacent nodes and return its head.
Example:
Given 1->2->3->4, you should return the list as 2->1->4->3.
Note:
- 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
self.next = None
class Solution:
def swapPairs(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
start = ListNode(0)
start.next = head
headpre = start
while headpre.next and headpre.next.next:
# print('headpre:',headpre.val,'head:',head.val)
temp = headpre.next.next
headpre.next.next = temp.next
temp.next = headpre.next
headpre.next = temp
headpre = temp.next
# print('headpre:',headpre.val,'head:',head.val)
return start.next