题目
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
思路
逐对交换相邻结点的值,需要判断空链表、结点数量为奇数的情况
Python
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def swapPairs(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head or not head.next: return head
first = head
while first.next:
second = first.next
first.val, second.val = second.val, first.val
if second.next:
first = second.next
else: break
return head