1.先建立一个头节点,同时创建指针p指向头节点。
2.不断比较head1、head2指向节点值的大小。使p.next指向每次比较后较小的节点,以扩展新链表,并始终保持p指针指向新链表的最后一个结点。每次比较后,使较小的head指针后移一个。
3.若有一个head指针指向NULL,则使p.next直接指向另一个链表的剩余部分。
注:新链表不是占用新的储存空间,而是通过next指针穿插于两个链表之中。
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
ListNode* res=new ListNode(-1);
ListNode* p=res;
while(pHead1 && pHead2)
{
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?pHead1:pHead2;
return res->next;
}
};