题目描述 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
解题思路
- 新建一个表头;
- 比较两个链表的头结点,让表头指向较小的头结点;
- 返回新建表头的下一个节点
代码
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode *head = new ListNode(0);
ListNode *p = head;
while(l1 && l2){
if(l1->val < l2->val)
{
p->next = l1;
p = l1;
l1 = l1->next;
}else{
p->next = l2;
p = l2;
l2 = l2->next;
}
}
if(l1){
p->next = l1;
}
if(l2){
p->next = l2;
}
return head->next;
}
};