思路,定义一个新的头节点,两个双指针,每次比较两个指针指向的值的大小,
小的那一个加入新头节点的后面,该指针后移。另外一个不动。迭代即可。
最后注意把最后比较的较大的一个,加入到新节点的最后。
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
ListNode *p1 = pHead1;
ListNode *p2 = pHead2;
ListNode * new_head = new ListNode(-1);
ListNode * temp = new_head;
while(p1!=nullptr && p2!=nullptr)
{
if(p1->val<p2->val)
{
temp->next = p1;
p1=p1->next;
}
else
{
temp->next = p2;
p2=p2->next;
}
temp=temp->next;
}
//最后还要把最后一组的较大的那一个加上
if(p1==nullptr)
temp->next = p2;
if(p2==nullptr)
temp->next = p1;
return new_head->next;
}
};