剑指offer:合并两个排序的链表

来源:互联网 发布:微软sql 编辑:程序博客网 时间:2024/06/04 18:32

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

(这题也可以用递归来做)

/*struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};*/class Solution {public:    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)    {        if(pHead1 == NULL)            return pHead2;        else if(pHead2 == NULL)            return pHead1;                    ListNode* pHead;        if(pHead1->val <= pHead2->val)         {              pHead = pHead1;              pHead1 = pHead1->next;         }        else        {              pHead = pHead2;              pHead2 = pHead2->next;        }        ListNode* pout =  pHead;                    while(pHead1 != NULL && pHead2 != NULL)         {             while(pHead1 != NULL && (pHead1->val <= pHead2->val))              {                    pHead->next = pHead1;                    pHead1 = pHead1->next;                    pHead =   pHead -> next;              }               while(pHead2 != NULL && pHead1 != NULL && (pHead1->val > pHead2->val))              {                    pHead->next = pHead2;                    pHead2 = pHead2->next;                    pHead =   pHead -> next;              }        }                if(pHead1 == NULL)         {                while(pHead2 != NULL)                {                    pHead->next = pHead2;                    pHead2 = pHead2->next;                    pHead =   pHead -> next;                }         }                 if(pHead2 == NULL)         {                while(pHead1 != NULL)                {                    pHead->next = pHead1;                    pHead1 = pHead1->next;                    pHead =   pHead -> next;                }         }        pHead -> next = NULL;        return pout;       }};


0 0
原创粉丝点击