头节点的处理是关键,有两种方案,第一要么对头节点先进行处理,得到一个值。第二种就是建立一个辅助头节点,这样就不用单独对头节点进行处理,代码会简洁,只要返回辅助节点的下一个节点就ok了。代码如下,
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
ListNode* p=new ListNode(-1);
ListNode* re=p;
while(pHead1!=NULL&&pHead2!=NULL){
if(pHead1->val<pHead2->val){
p->next=pHead1;
pHead1=pHead1->next;
p=p->next;
}else{
p->next=pHead2;
pHead2=pHead2->next;
p=p->next;
}
}
p->next=pHead1!=NULL?pHead1:pHead2;
return re->next;
}
};