题目:
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 public class Solution { 2 public ListNode swapPairs(ListNode head) 3 { 4 if(head == null || head.next == null)return head; 5 ListNode fakehead = new ListNode(0); 6 fakehead.next = head; 7 8 ListNode ptr0 = fakehead; 9 ListNode ptr1 = fakehead.next; 10 11 while(ptr1!=null&&ptr1.next!=null) 12 { 13 ListNode ptr2 = ptr1.next; 14 ListNode ptr3 = ptr1.next.next; 15 ptr0.next=ptr2; 16 ptr2.next=ptr1; 17 ptr1.next=ptr3; 18 ptr0=ptr1; 19 ptr1=ptr3; 20 21 } 22 23 return fakehead.next; 24 } 25 }