Skip to content

Swap Nodes in Pairs

10/09/2013

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;
        
    }


From → LeetCode

Leave a Comment

Leave a comment