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 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
public class Solution { public ListNode swapPairs(ListNode head) { ListNode c = null; ListNode n = null; ListNode nn = null; if(head==null){ return null; } if(head.next!=null){ nn = head.next; }else{ return head; }
c = head; while(true){ if(c.next!=null){ n = c.next.next; c.next.next=c; if(n==null){ c.next=n; }else if(n.next!=null){ c.next=n.next; c = n; continue; }else{ c.next=n; } if(c.next==null)break; c = c.next; }else{ break; } } return nn; } }
|