给定一个链表,对每两个相邻的结点作交换并返回头节点。
例如:
给定 1->2->3->4
,你应该返回 2->1->4->3
。
你的算法应该只使用额外的常数空间。不要修改列表中的值,只有节点本身可以更改。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
if (head==null||head.next==null) {
return head;
}
ListNode temp = head.next;
head.next = temp.next;
temp.next = head;
head.next = swapPairs(head.next);
return temp;
}
}