首页 > 其他 > 详细

21合并两个有序链表

时间:2019-10-07 19:28:43      阅读:91      评论:0      收藏:0      [点我收藏+]

1、思路

  • 申请一个头节点phead,和指向头节点的指针p
  • l1代表链表1的第一个结点,l2同理
  • 判断两个链表是否为空
  • 比较l1和l2的大小,小的插入头节点的后面,然后将指针移动到下一位
  • 终止条件是l1和l2结点不为空
  • 当有一个为空的时候,直接将剩下的结点插在p后面!!

2、代码

 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  */
 9 class Solution {
10 public:
11     ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
12         if(l1==NULL) return l2;
13         if(l2==NULL) return l1;
14         ListNode *phead,*p;//定义头节点
15         phead=new ListNode(0);
16         phead->next=NULL;
17         p=phead;
18         while(l1!=NULL&&l2!=NULL){
19             if(l1->val<=l2->val){
20                // l1->next=p->next;
21                 p->next=l1;
22                 l1=l1->next;
23             }
24             else{
25                // l2->next=p->next;
26                 p->next=l2;
27                 l2=l2->next;
28             }
29             p=p->next;
30         }
31         p->next=l1!=NULL?l1:l2;//判断哪一个先为空
32         return phead->next;
33     }
34 };

 

21合并两个有序链表

原文:https://www.cnblogs.com/hehesunshine/p/11631785.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!