首页后端开发ASP.NETC语言怎么合并两个有序链表

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

时间2024-02-01 01:24:03发布访客分类ASP.NET浏览913
导读:收集整理的这篇文章主要介绍了C语言怎么合并两个有序链表,觉得挺不错的,现在分享给大家,也给大家做个参考。c语言合并两个有序链表的方法:拼接指定的两个有序链表的所有节点即可。例如两个有序链表分别为【1->2->4】和【1->...
收集整理的这篇文章主要介绍了C语言怎么合并两个有序链表,觉得挺不错的,现在分享给大家,也给大家做个参考。

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

具体方法:

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

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

输入:

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->
    vall2->
val){
            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;
}
    

图文教程分享:java入门

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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: c语言for循环如何打印菱形下一篇:vc++6.0怎么新建c语言文件猜你在找的ASP.NET相关文章 C# 一些面试试题的实例教程2022-05-16.NET 6开发TodoList应用之请求日志组件HttpLogging介绍2022-04-16.NET 6中间件Http Logging使用介绍2022-04-16gojs一些实用的高级用法2022-04-16.NET6开发TodoList应用之实现查询排序2022-04-16.NET6开发TodoList应用之实现数据塑形2022-04-16.NET微服务架构CI/CD自动打包镜像2022-04-16Asp.Net Core 使用Monaco Editor 实现代码编辑器功能2022-04-16.NET微服务架构CI/CD自动构建Jenkins+Gitee2022-04-16.Net Core微服务网关Ocelot集成Consul2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: C语言怎么合并两个有序链表
本文地址: https://pptw.com/jishu/594736.html
c语言程序的执行总是起始于什么? 原生js实现星星闪烁效果

游客 回复需填写必要信息