【题目】
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
【代码】
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
if(pHead1==NULL||pHead2==NULL)
return pHead1==NULL?pHead2:pHead1;
ListNode*pHead=NULL;
ListNode *p1=pHead1;
ListNode *p2=pHead2;
ListNode *p=pHead;
while(p1!=NULL&&p2!=NULL)
{
ListNode *q=NULL;
if(p1->val<=p2->val)
q=p1;
else q=p2;
// =p1->val<=p2->val?p1:p2;
if(pHead==NULL)//初次插入结点
{
p=q;
(q==p1)?(p1=p1->next):(p2=p2->next);
p->next=NULL;
pHead=p;//这里很重要啊!!!
}
else
{
p->next=q;
(q==p1)?(p1=p1->next):(p2=p2->next);
p=p->next;
p->next=NULL;
}
}
p->next= (p1==NULL)?p2:p1;
return pHead;
}
【个人总结】
pHead=p;这里要加上,因为前面是对p进行操作!这个时候pHead仍然是NULL!!!!!!