Swap Nodes in Pairs
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.
public ListNode swapPairs(ListNode head) { if(head == null || head.next == null) return head; ListNode p = head; ListNode newhead = head.next; while(p != null && p.next != null){ ListNode q = p.next; ListNode m = q.next; q.next = p; if(m != null){ if(m.next != null){ p.next = m.next; } else{ p.next = m; m.next = null; break; } } else{ p.next = null; } p=m; } return newhead; }
Leave a Comment