当前位置: 首页 > news >正文

家庭农场网站建设塑胶制品 东莞网站建设

家庭农场网站建设,塑胶制品 东莞网站建设,百度手机助手app官方下载,合肥市住房和城乡建设局网站原题链接:https://leetcode.cn/problems/merge-two-sorted-lists/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 可以先创建一个空链表,然后依次从两个有序链表中选取最小的进行尾插操作。(有点类似双…

原题链接:https://leetcode.cn/problems/merge-two-sorted-lists/description/

目录

1. 题目描述

2. 思路分析

3. 代码实现


1. 题目描述

2. 思路分析

可以先创建一个空链表,然后依次从两个有序链表选取最小的进行尾插操作。(有点类似双指针的操作~)

我们可以用不带哨兵位带哨兵位两种方法实现:

不带哨兵位

如果两个链表有一个为空,直接返回另一个链表即可。

如果两个链表都是非空的,我们就创建一个结构体指针head和一个结构体指针tail,都初始化为空指针NULL,之后分别用来指向新链表的头和尾。

同时遍历两个链表,当有一个链表遍历完时停止。这里使用while(list1&&list2)进行循环

当空链表插入第一个结点(也就是tail==NULL)时需要单独考虑,让头指针head和尾指针next都指向此时值较小的那个结点即可。

其他情况,正常尾插即可,就是让tail->next指向值较小的结点。之后让tail指向当前插入的结点(也就是让tail往后走一步),然后让相对应的list1或者list2往后走一步即可。

因为有可能while循环结束时,还有链表的结点没有被插入到新链表。所以我们要用if语句判断,将剩余的结点直接插入到新链表

最后我们返回头指针head即可。

带哨兵位

带哨兵位最大的好处是方便尾插不用单独考虑在新链表插入第一个结点时的情况了,因为带哨兵位让每一个结点地位都一样了

这里相比不带哨兵位多的一些操作就是要先用malloc()函数申请一个结点作为哨兵位,让head和tail一开始都直接指向这个结点。

当完成合并操作后,让头指针head往后走一步,指向哨兵位后面一个结点

然后使用free()释放掉哨兵位

最后返回head即可。

3. 代码实现

不带哨兵位

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){if(list1==NULL)return list2;if(list2==NULL)return list1;struct ListNode *head=NULL,*tail=NULL;while(list1&&list2){if(list1->val<=list2->val){if(tail==NULL){head=tail=list1;}else{tail->next=list1;tail=tail->next;}list1=list1->next;}else{if(tail==NULL){head=tail=list2;}else{tail->next=list2;tail=tail->next;}list2=list2->next;}}if(list1)tail->next=list1;if(list2)tail->next=list2;return head;
}

带哨兵位

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){if(list1==NULL)return list2;if(list2==NULL)return list1;struct ListNode *head=NULL,*tail=NULL;//带一个哨兵位,方便尾插head=tail=(struct ListNode*)malloc(sizeof(struct  ListNode));while(list1&&list2){if(list1->val<=list2->val){tail->next=list1;tail=tail->next;list1=list1->next;}else{tail->next=list2;tail=tail->next;list2=list2->next;}}if(list1)tail->next=list1;if(list2)tail->next=list2;struct ListNode *del=head;head=head->next;free(del);return head;
}

http://www.yayakq.cn/news/418666/

相关文章:

  • 南京个人做网站的乐云网站建设
  • xxx网站建设规划书wordpress自定义字段分类
  • 网站备案 年审杭州房产网二手房
  • 三河市网站建设展示型网站可以做推广的吗
  • 桂阳网站定制微信营销大师
  • 站长工具ping东莞网站平台费用
  • 游戏网站建设策划方案模板wordpress浮动音乐
  • 贵阳网站开发方舟网络网站设计时间
  • 网页小游戏网站建设西湖区高端网站建设
  • 在哪个网站做注册资本变更互联网100个创业项目名称
  • 网站没有地图怎么做的wordpress文章自动内链
  • 洛阳网站开发培训做化工的在哪个网站做平台好
  • linux 网站备份wordpress加载单页面
  • 基础网站怎么做1月初达到感染高峰
  • 网站建设免费维护内容网站主题颜色
  • 做混剪素材下载网站网站建设公司图片
  • 如何建设个人网站建什么网站收益比较号
  • 婚纱摄影网站源码下载广东东远建设工程管理有限公司网站
  • wordpress游戏评测站睡觉网站建设的特点
  • 服务类的网站怎么做站长工具是什么
  • 学校电脑课做网站的软件可以做直播的游戏视频网站
  • 物流网站和数据库建设wordpress界面变宽
  • 如何建设废品网站漂亮的蓝色网站
  • 农家乐网站 建设免费的行情网站app软件大全
  • 长沙正规制作网站公司微信如何分享wordpress
  • 做贺卡网站无锡网站建设推广公司
  • 黄石公司做网站阿里企业邮箱网页版
  • 建设企业网站的好处网站门户是什么意思
  • 网站速成网站商城微信支付接口
  • 企业网站内使用了哪些网络营销方式怎么做网站维护