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.
代码如下:
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 public class Solution { 10 public ListNode swapPairs(ListNode head) { 11 12 if(head==null||head.next==null) 13 return head; 14 ListNode first=head; 15 ListNode second=first.next; 16 ListNode temp=first; 17 head=second; 18 19 while(first!=null&&second!=null) 20 { 21 temp.next=second; 22 first.next=second.next; 23 temp=first; 24 second.next=first; 25 first=first.next; 26 if(first!=null&&first.next!=null) 27 { 28 second=first.next; 29 } 30 else break; 31 } 32 return head; 33 } 34 35 }