合并两个排序的链表(剑指Offer-25)
题面
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例
1输入:1->2->4, 1->3->4 2输出:1->1->2->3->4->4
限制
10 <= 链表长度 <= 1000
思路
链表合并,设立一个伪头结点可以方便代码书写。
代码
1/**
2 * Definition for singly-linked list.
3 * struct ListNode {
4 * int val;
5 * ListNode *next;
6 * ListNode(int x) : val(x), next(NULL) {}
7 * };
8 */
9class Solution {
10public:
11 ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
12 ListNode *head = new ListNode(0);
13 ListNode *p = head;
14 while(l1 && l2){
15 if(l1->val < l2->val){
16 p->next = l1;
17 l1 = l1->next;
18 }else{
19 p->next = l2;
20 l2 = l2->next;
21 }
22 p = p->next;
23 }
24 p->next = l1 ? l1 : l2;
25 return head->next;
26 }
27};