输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
代码:
/*
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;
if( pHead2==NULL ) return pHead1;
ListNode * pNewHead = NULL;
ListNode * pNode = NULL;
ListNode * pCur1 = pHead1;
ListNode * pCur2 = pHead2;
if( pHead1->val <= pHead2->val)
{
pNewHead = pHead1;
pCur1 = pCur1->next;
}else{
pNewHead = pHead2;
pCur2=pCur2->next;
} //头结点指向较小的值 ,并将相应的指针后移一位
pNode = pNewHead; //pNode指向有实际值的结点
while(pCur1 && pCur2){ //都不指向空,即没到末尾
if(pCur1->val<=pCur2->val){
pNode->next = pCur1;
pCur1 = pCur1->next;
pNode = pNode->next;
}
else{
pNode->next = pCur2;
pCur2 = pCur2->next;
pNode = pNode->next;
}
}
if(pCur2==NULL) pNode->next = pCur1;
if(pCur1==NULL) pNode->next = pCur2;
return pNewHead;
}
};