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.

 

Code:

class Solution {
public:
    ListNode *swapPairs(ListNode *head) {
        if(head==NULL) return head;
        ListNode *start = new ListNode(0);
        start->next=head;
        ListNode *pre=start;
        ListNode *cur=head;
        ListNode *nex=head->next;
        
        while(nex){
            //exchanging..
            pre->next=nex;
            cur->next=nex->next;
            nex->next=cur;
            //moving forward..
            pre=cur;
            cur=cur->next;
            if(cur==NULL)
                break;
            nex=cur->next;
        }
        head=start->next;
        delete start;
        return head;
    }
};

 

posted @ 2013-11-01 05:35  WinsCoder  阅读(133)  评论(0编辑  收藏  举报