合并两个排好序的单链表-阿里云开发者社区

开发者社区> 技术mix呢> 正文

合并两个排好序的单链表

简介:
+关注继续查看

示例

思路一:两个链表同时逐个遍历

参考代码

复制代码
ListNode* combinList(ListNode *head_1, ListNode *head_2)
{
    ListNode *head_3 = NULL;
    if(head_1 == NULL)
    {
        head_3 = head_2;
    }
    else if(head_2 == NULL)
    {
        head_3 = head_2;
    }
    else
    {
        ListNode *p1 = head_1;
        ListNode *p2 = head_2;
        ListNode *pre = NULL;
        if(p1->value < p2->value)
        {
            head_3 = p1;
            pre = head_3;
            p1 = p1->next;
        }
        else
        {
            head_3 = p2;
            pre = head_3;
            p2 = p2->next;
        }
        while(p1 && p2)
        {
            if(p1->value < p2->value)
            {
                pre->next = p1;
                pre = p1;
                p1 = p1->next;
            }
            else
            {
                pre->next = p2;
                pre = p2;
                p2 = p2->next;
            }
        }
        if(p1)
            pre->next = p1;
        if(p2)
            pre->next = p2;
    }
    return head_3;
}
复制代码

思路二:递归

参考代码

复制代码
ListNode* combinListRecursion(ListNode *head_1, ListNode *head_2)
{
    if(head_1 == NULL)
        return head_2;
    else if(head_2 == NULL)
        return head_1;
    ListNode *head = NULL;
    if(head_1->value < head_2->value)
    {
        head = head_1;
        head->next = combinListRecursion(head_1->next, head_2);
    }
    else
    {
        head = head_2;
        head->next = combinListRecursion(head_1, head_2->next);
    }
    return head;
}
复制代码

执行

 

 View Code

 

 




本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3609025.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10092 0
【算法导论】合并排序法
       分治法:将原问题划分为n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就得到了原问题的解。分治法在每一个递归上都有三个步骤:分解、解决、合并。
788 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13893 0
Java单链表归并排序
概念 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,归并排序将两个已排序的表合并成一个表。 归并排序基本原理 通过对若干个有序结点序列的归并来实现排序。 所谓归并是指将若干个已排好序的部分合并成一个有序的部分。 单链表实现归并排序 找到中间点拆分链表 //找到中间点,然后分割
3614 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11893 0
Linux基本操作 8----- 文件的排序+分割+合并+归档等
 1 sort     1 sort命令将输入文件看做由多条记录组成的数据流,而记录由可变宽度的字段组成,以换行符作为定界符     2 sort的命令的基本格式        sort 选项 文件     3 sort命令选项及其意...
749 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7365 0
+关注
2969
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载