题目描述
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
思路
可以每次获取L1 , L2 中较小的结点保存,然后迭代。
定义头结点
若 L1 指向的结点值 < L2 指向的结点值,则将 L1 链接到头结点的 next 位置
否则将 l2 链接到头结点的 next 位置
循环进行,直至 l1 或 l2 为 NULL
最后,将 l1 或 l2 中剩下的部分,链接到头结点后面
代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* head = new ListNode(1);
ListNode* res = head;
while(l1 != NULL && l2 != NULL){
if(l1 -> val < l2 -> val){
head -> next = l1;
l1 = l1 -> next;
}else{
head -> next = l2;
l2 = l2 -> next;
}
head = head->next;
}
head -> next = l1 == NULL ? l2 : l1;
return res -> next;
}
};