C语言怎么合并两个有序链表

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

C语言怎么合并两个有序链表

具体方法:

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

(视频教程推荐:java课程)

输入:

立即学习“C语言免费学习笔记(深入)”;

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->valval){            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->valval){                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->valval){                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->valval){            list->next = list1;            list=list->next;            list->next=list2;        }else{            list->next=list2;            list=list->next;            list->next=list1;        }    }    return l;}

登录后复制

图文教程分享:java入门

以上就是C语言怎么合并两个有序链表的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2432665.html

(0)
上一篇 2025年3月3日 09:08:57
下一篇 2025年2月18日 08:17:11

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何用c语言编写动态烟花

    用c语言编写动态烟花的方法:首先绘制菜单界面显示文字;然后设置烟花有上升阶段和爆炸阶段,定义烟花和烟花弹结构体;最后初始化数据,加载资源贴图,随机发射数目随机。 用c语言编写动态烟花的方法: 效果展示 动态图 总体框架 /*********…

    2025年3月3日 编程技术
    200
  • c语言volatile关键字的作用是什么?

    c语言volatile关键字的作用:提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,告诉编译器对该变量不做优化,都会直接从变量内存地址中读取数据,从而可以提供对特殊地址的稳定访问,以免出错。 …

    2025年3月3日
    200
  • c语言中,char型数据是以什么形式存储的?

    c语言中,char型数据是“ASCII码”形式存储的。在C语言中,将一个字符常量放到一个字符变量中,实际并不是把该字符本身放到内存单元中,而是将与该字符相对应的ASCII码放到存储单元中。 教程推荐:《c语言教程视频”>c…

    2025年3月3日
    200
  • c语言指针用法有哪些

    c语言指针用法:1、指针变量与普通变量一样默认值不确定,一般初始化为NULL;2、指针变量的用法与普通变量不同,一般以p结尾加以区分;3、指针变量的类型决定了通过指针变量访问内存时访问几个字节。 c语言指针用法: 一,指针定义: 指针变量的…

    2025年3月3日
    200
  • c语言源文件经过编译后生成文件的后缀是什么?

    c语言源文件经过编译后生成文件的后缀是“.obj”。C语言源程序经过编译程序编译之后,生成一个后缀为“.obj”的文件,最后由称为“连接程序”的软件,把此“.obj”文件与各种库函数连接在一起,生成一个后缀“.exe”的可执行文件。 本教程…

    2025年3月3日
    200
  • c语言程序中的基本功能模块为什么?

    c语言程序中的基本功能模块为“函数”。一个C语言程序可以由一个主函数和若干个函数构成;一个大的应用程序一般应该分为多个程序模块,每一个模块用来实现一个功能,而模块的功能是由函数完成的。 教程推荐:《c语言教程视频”>c语言…

    2025年3月3日
    200
  • c语言中字符常量是什么?

    c语言中字符常量是指由一对单引号括起来的单个字符,如“ ‘a’”、“’D’”、“’?’”、“’$’”;它代表ASCII字符集中的一个字符,在内存…

    2025年3月3日
    200
  • c语言中数据结构是什么?常见数据结构有哪些?

    c语言中,数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,它是计算机存储、组织数据的方式;常见数据结构有:线性数据结构(数组、链表、栈、队列和线性表)、树形结构(二叉树、完全二叉树、二叉查找树、堆)、图形结构(有向图和无向图)。…

    2025年3月3日 编程技术
    200
  • c语言是高级语言吗?

    c语言是高级语言。高级语言是一种独立于机器,面向过程或对象的语言;它并不是特指的某一种具体的语言,而是包括很多编程语言,如流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,中文版的C语言等。…

    2025年3月3日
    200
  • C语言标识符有哪三类

    C语言标识符有关键字、用户标识符、预定义标识符三类。C语言规定,标识符只能由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,不能是数字。 C语言中的标识符可分为关键字、用户标识符、预定义标识符三类。 (学习视频分享:java视频教…

    2025年3月3日
    200

发表回复

登录后才能评论