题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:先建立一个虚拟的头,当两个链表都不为空的时候,将较小的值的链表加到dummy的后面,直到有一个链表为空,跳出while循环。然后将不是空指针的那个链表加入到dummy的后面即可。最后输出dummy->next即可。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
ListNode* dummy=new ListNode(-1);
ListNode* cur=dummy;
while(pHead1!=nullptr&&pHead2!=nullptr){
if(pHead1->val>pHead2->val){
ListNode* t=pHead2->next;
pHead2->next=nullptr;
cur->next=pHead2;
cur=cur->next;
pHead2=t;
}
else{
ListNode* t=pHead1->next;
pHead1->next=nullptr;
cur->next=pHead1;
cur=cur->next;
pHead1=t;
}
}
if(pHead1!=nullptr) cur->next=pHead1;
if(pHead2!=nullptr) cur->next=pHead2;
return dummy->next;
}
};