题面
合并两个排序链表。
算法
创建结果链表头*res,*p指向头,当两个链表节点都不为空时,比较节点值,值小的挂在p后面,二者(p和小者)顺次后移。知道某条链表空,跳出while循环。接着,直接将不空的链表挂在p后即可。
Note: 注意返回值 res->next;
源码
1 class Solution { 2 public: 3 ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { 4 ListNode* res = new ListNode(0); 5 ListNode* p = res; 6 //都不为空 7 while(l1 != nullptr && l2 != nullptr) 8 { 9 if(l1->val < l2->val) 10 { 11 p->next = l1; 12 p = p->next; 13 l1 = l1->next; 14 } 15 else 16 { 17 p->next = l2; 18 p = p->next; 19 l2 = l2->next; 20 } 21 } 22 //至少一条为空 23 if(l1 == nullptr) 24 p->next = l2; 25 else if (l2 == nullptr) 26 p->next = l1; 27 28 return res->next; 29 } 30 };