题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路:从左到右依次比较链表中的较小值,取较小值链接至新表头,直至其中一个链表为NULL;将剩余的另一个链表连接至新链表尾部即可。
代码如下:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
ListNode *Head=(ListNode*)malloc(sizeof(ListNode));
Head->next=NULL;
ListNode *p=pHead1,*q=pHead2,*L=Head;
while(p!=NULL&&q!=NULL)
{
if(p->val>=q->val)
{
L->next=q;
q=q->next;
L=L->next;
L->next=NULL;
}
else
{
L->next=p;
p=p->next;
L=L->next;
L->next=NULL;
}
}
if(p!=NULL)
L->next=p;
if(q!=NULL)
L->next=q;
return Head->next;
}
};