1. 程式人生 > >合併兩個已經排好序的連結串列

合併兩個已經排好序的連結串列

struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
    {
        ListNode* Pmergenode = NULL;
if (pHead1 == NULL)return pHead2;//當連結串列1是空時,合併後就返回連結串列2
if (pHead2 == NULL)return pHead1;//當連結串列2是空時,合併後就返回連結串列1
if (pHead1 == NULL&&pHead2 == NULL)return NULL;//這種情況只有一開始兩個連結串列均為空時發生
        else 
            if(pHead1->val<pHead2->val)
              { Pmergenode=pHead1;
                Pmergenode->next=Merge(pHead1->next,pHead2);
              }
             else
             {Pmergenode=pHead2;
              Pmergenode->next=Merge(pHead2->next,pHead1);
             }
        return Pmergenode;
    } 
};