Swap Nodes in Pairs

考察指针的使用,但是写的过程中遇到一些问题,主要是写之前没想清需要用到哪些额外的指针。

最后解决方案里有4个指针,result记录结果,tmp1和tmp2分别记录前后两个要交换的指针,next记录下面一组指针的第一个指针。解决办法比较笨,应该有简洁的方法,第二遍刷的时候细究吧。

    ListNode *swapPairs(ListNode *head) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if(head == NULL || head->next == NULL)
            return head;
        ListNode *result = head->next;
        ListNode *tmp1 = head, *tmp2 = head->next;
        while(tmp2 != NULL){
            tmp1->next = tmp2->next;
            tmp2->next = tmp1;
            if(tmp1->next == NULL || tmp1->next->next == NULL)
                tmp2 = NULL;
            else
                tmp2 = tmp1->next->next;
            ListNode *next = tmp1->next;
            if(tmp2 != NULL)
                tmp1->next = tmp2;
            tmp1 = next;
        }
        return result;
    }

 

posted on 2013-09-28 19:41  waruzhi  阅读(184)  评论(0编辑  收藏  举报

导航