LeetCode 21. 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
算法:线性扫描。我们只需从头到尾扫一遍两个链表。将小的插到新链表头部。最后不要忘了接上未连接的部分。
/** * 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) { auto l=new ListNode(-1); auto cur=l; auto p=l1,q=l2; while(p&&q){ if(p->val>q->val){ cur->next=q; q=q->next; } else{ cur->next=p; p=p->next; } cur=cur->next; } cur->next=p?p:q; return l->next; } };