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&&pHead2==NULL)
return NULL;
if(pHead1==NULL)
return pHead2;
if(pHead2==NULL)
return pHead1;
ListNode* Head1=pHead1;
ListNode* Head2=pHead2;
ListNode* pNewHead=NULL;
ListNode* pNewTail=NULL;
//初始化新頭新尾
if(Head1->val < Head2->val)
{
pNewHead=Head1;
Head1=Head1->next;
}
else
{
pNewHead=Head2;
Head2=pHead2->next;
}
pNewTail=pNewHead;
//連接
while(Head1 && Head2)
{
if(Head1->val < Head2->val)
{
pNewTail->next=Head1;
Head1=Head1->next;
}
else
{
pNewTail->next=Head2;
Head2=Head2->next;
}
pNewTail=pNewTail->next;
}
//一個爲空出循環則連接另一個
if(Head1==NULL)
{
pNewTail->next=Head2;
}
else
{
pNewTail->next=Head1;
}
return pNewHead; //返回鏈表頭
}
};
合併兩有序鏈表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.