Tuesday, June 4, 2013

Leetcode: Swap Nodes in Pairs in C++



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.

Solution:

ListNode *swapPairs(ListNode *head) {
        if(!head)
        return NULL;
        ListNode* result;
        if(head->next)
        result = head->next;
        else
        return head;
        ListNode* cur = NULL;
        ListNode* pre = NULL;
        while(head&&head->next)
        {
            cur = head->next->next;
            head->next->next = head;
            if(pre)
            pre->next = head->next;
            head->next = NULL;
            pre = head;
            head = cur;
        }
        if(head&&pre)
        pre->next = head;
        return result;
    }

No comments:

Post a Comment