合并两个排序的链表
作者:互联网
题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
这道题也是很基础的一道题,当两个链表都有值时,也就是它们都不为空时,我们需要对比它们表头的大小,让新链表指向值小的那个链表。这里需要给新链表定义一个虚拟头节点。指向操作完成后,让值小的那个链表往前走一个,新链表也往前走一个。
当某个链表走到空时,会跳出循环,这时我们看一下哪个链表还不为空,如果有不为空的链表,则把它直接加到新链表的后面。
c++代码如下:
1 class Solution { 2 public: 3 ListNode* Merge(ListNode* pHead1, ListNode* pHead2) 4 { 5 ListNode* pHead3 = new ListNode(-1); 6 auto dummy = pHead3; 7 while(pHead1 && pHead2){ 8 if(pHead1->val <= pHead2->val){ 9 pHead3->next = pHead1; 10 pHead1 = pHead1->next; 11 } 12 else{ 13 pHead3->next = pHead2; 14 pHead2 = pHead2->next; 15 } 16 pHead3 = pHead3->next; 17 } 18 if(pHead1) pHead3->next = pHead1; 19 if(pHead2) pHead3->next = pHead2; 20 return dummy->next; 21 } 22 };
标签:ListNode,合并,next,链表,pHead1,pHead2,pHead3,排序 来源: https://www.cnblogs.com/hellosnow/p/12077986.html