1,题目要求
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
2,题目思路
对于这道题,要求将两个有序的单链表合并为一个有序的单链表。
在实现上,我们可以首先定义一个头结点,方便开始遍历以及最后快速返回头指针。
如果一个链表先变为空,就让另一个不为空的链表连接到当前已经合并好的链表之后。
3,代码实现
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
ListNode preHead(-1);
ListNode* head_tail = &preHead;
while(pHead1 && pHead2){
if(pHead1->val <= pHead2->val){
head_tail->next = pHead1;
pHead1 = pHead1->next;
}
else{
head_tail->next = pHead2;
pHead2 = pHead2->next;
}
head_tail = head_tail->next;
}
head_tail->next = pHead1 ? pHead1 : pHead2;
return preHead.next;
}
};