C语言合并两个有序链表的方法:拼接指定的两个有序链表的所有节点即可。例如两个有序链表分别为【1->2->4】和【1->3->4】,合并后的有序链表为【1->1->2->3->4->4】。

具体方法:

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

输入:

1->2->4, 1->3->4

输出:

1->1->2->3->4->4

分析:两个链表为有序链表,所以依次遍历两个链表比较大小即可。

代码实现:

/**

* Definition for singly-linked list.

* struct ListNode {

*     int val;

*     struct ListNode *next;

* };

*/

struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){

if(l1==NULL){

return l2;

}

if(l2==NULL){

return l1;

}

struct ListNode *l = (struct ListNode*)malloc(sizeof(struct ListNode));

l->next = NULL;

struct ListNode *list1 = l1;

struct ListNode *list2 = l2;

if(l1->valval){

l->val=l1->val;

if(list1->next==NULL){

l->next=list2;

return l;

}

list1=list1->next;

}else{

l->val=l2->val;

if(list2->next==NULL){

l->next=list1;

return l;

}

list2=list2->next;

}

struct ListNode *list = l;

while(list1->next!=NULL&&list2->next!=NULL){

if(list1->val<=list2->val){

struct ListNode *body = (struct ListNode *)malloc(sizeof(struct ListNode));

body->val = list1->val;

body->next = NULL;

list->next = body;

list = list->next;

list1 = list1->next;

}else{

struct ListNode *body = (struct ListNode*)malloc(sizeof(struct ListNode));

body->val=list2->val;

body->next=NULL;

list->next=body;

list=list->next;

list2=list2->next;

}

}

if(list1->next==NULL){

while(list2->next!=NULL){

if(list1->val<=list2->val){

list->next = list1;

list = list->next;

list->next=list2;

return l;

}else{

struct ListNode *body = (struct ListNode*)malloc(sizeof(struct ListNode));

body->val=list2->val;

body->next=NULL;

list->next=body;

list=list->next;

list2=list2->next;

}

}

}else{

while(list1->next!=NULL){

if(list2->val<=list1->val){

list->next=list2;

list=list->next;

list->next=list1;

return l;

}else{

struct ListNode *body = (struct ListNode*)malloc(sizeof(struct ListNode));

body->val=list1->val;

body->next=NULL;

list->next=body;

list=list->next;

list1=list1->next;

}

}

}

if(list1->next==NULL&&list2->next==NULL){

if(list1->val<=list2->val){

list->next = list1;

list=list->next;

list->next=list2;

}else{

list->next=list2;

list=list->next;

list->next=list1;

}

}

return l;

}

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

C语言怎么合并两个有序链表相关推荐

  1. LeetCode 21.23.剑指 Offer II 078. 合并两个有序链表 | C语言版

    LeetCode 21. 合并两个有序链表 | C语言版 LeetCode 21. 合并两个有序链表 题目描述 解题思路 思路一:使用栈 代码实现 运行结果 参考文章: 思路二:减少遍历节点数 代码实 ...

  2. 合并两个有序链表 C语言 leetcode21题

    目录 1.题目来源 2.函数介绍 3.问题示例 4.函数实现 代码 1.题目来源 21. 合并两个有序链表 - 力扣(LeetCode)https://leetcode.cn/problems/mer ...

  3. LeetCode题组:第21题-合并两个有序链表

    1.题目:合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出: ...

  4. 两个有序链表序列的交集_LeetCode | 21.合并两个有序链表

    点击上方蓝字关注我们 1.LeetCode | 2.两数相加 2.LeetCode | 206.反转链表 3.LeetCode | 1.两数之和 4.LeetCode | 703.数据流中的第K大元素 ...

  5. 两个有序链表序列的交集_剑指offer第21天:合并两个有序链表

    我准备了 1000 本电子书和计算机各领域高清思维导图 100 张,关注后回复[资源],即可获取!更可回复[内推]加入 BAT 内推群! 01.题目分析 第21题:合并两个有序链表 将两个有序链表合并 ...

  6. 021合并两个有序链表

    合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. C语言: /*** Definition for singly-linked lis ...

  7. 合并两个有序链表(递归)

    合并两个有序链表(递归) 题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例 输入:1->2->4, 1->3->4 ...

  8. 【每日一算法】 合并两个有序链表

    微信改版,加星标不迷路! 每日一算法-合并两个有序链表 作者:阿广 阅读目录 1 题目 2 解析 1 题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. ...

  9. 【Java】leetCode 21 合并两个有序链表

    题目 : 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 解题思路 : 1.依据以上两个升序链表进行拼接: 2.先定义一个傀儡节点newHead,用来 ...

最新文章

  1. 2011年中国程序员薪水调查报告
  2. windows程序崩溃生成dump文件
  3. pr导入html文件,视频怎么导入Premiere啊?
  4. kafka批量启动脚本
  5. windows修改时间服务器,在Windows中设置时间服务器 2012 R2
  6. Golang——枚举(iota)的使用
  7. SVG 入门教程系列列表
  8. 在C#中嵌入Flash对象时遇到未能导入activex 控件的问题
  9. javascript面向对象系列第三篇——实现继承的3种形式
  10. 指向结构体变量的指针变量
  11. 2013dgtcs 数对
  12. 自建gitHub的webhook消息通知设计思路及成功验证结果
  13. VB代码VB小程序:实现USB摄像头视频图像的监控、截图、录像
  14. GitHub使用教程
  15. 小程序中如何使用vantUi库
  16. 阅读随笔摘录(来自刘强东自述-我的经营模式)
  17. c语言int函数使用方法,int函数的使用方法_Excel中int函数的操作用法
  18. eclipse windows 窗口背景颜色 保护视力
  19. 各种逆元求法 组合数取模 comb (组合数 Lucas)
  20. 如何在自己设置家里的路由器DNNS,并实现远程管理路由器。

热门文章

  1. intellij注释模板_IntelliJ中的实时模板
  2. Java线程的不同状态
  3. java 垃圾回收手动回收_Java垃圾回收(4)
  4. java.util接口_函数接口– Java 8中java.util.function包中的函数接口
  5. MapStruct:将数据从一个bean传输到另一个bean
  6. 向导页设计_向导设计模式
  7. 在运行时更新代码(已Spring解密)
  8. JDK 9 REPL:入门
  9. Java EE拦截器
  10. 2015年Java 8强势开始