首页 > 其他分享 >合并两个排序的链表

合并两个排序的链表

时间:2024-10-15 21:21:59浏览次数:3  
标签:NULL ListNode struct 合并 next 链表 pHead1 pHead2 排序

输入两个链表,并将它们的值按照递增的顺序合并成一个新的链表。

题目要求如下:

 

 我们可以创建两个新的链表,其中一个作为中间变量来存储合并后的链表,另一个链表记录中间链表并作为返回值返回。

代码如下:

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pHead1 ListNode类 
 * @param pHead2 ListNode类 
 * @return ListNode类
 */
struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) 
{
    // write code here
    struct ListNode* p=(struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode* pHead=p;
    if(pHead1==NULL&&pHead2==NULL)
    {
        return pHead1;
    }
    else if(pHead1==NULL&&pHead2!=NULL)
    {
        return pHead2;
    }
    else if(pHead1!=NULL&&pHead2==NULL)
    {
         return pHead1;
    }
    while(pHead1!=NULL&&pHead2!=NULL)
    {
        if(pHead1->val<pHead2->val)
        {
            p->next=pHead1;
            p=p->next;
            pHead1=pHead1->next;
        }
        else
        {
            p->next=pHead2;
            p=p->next;
            pHead2=pHead2->next;
        }
    }
    p->next=pHead1==NULL?pHead2:pHead1;
    return pHead->next;
}

标签:NULL,ListNode,struct,合并,next,链表,pHead1,pHead2,排序
From: https://blog.csdn.net/2401_86655821/article/details/142964754

相关文章

  • 单链表的基本概念
    单链表的定义typedefstructLNode{intdata;structLNode*next;//定义一个指向结构体自身的指针,用来指向下一个节点}LNode,*LinkList;_____________________________________________LNode*p=LinkListp;//两种定义指针的形式,侧重点不......
  • 堆排序题解
    给定一个整数序列,请按非递减序输出采用堆排序的各趟排序后的结果。输入格式:测试数据有多组,处理到文件尾。每组测试数据第一行输入一个整数n(1≤n≤100),第二行输入n个整数。输出格式:对于每组测试,输出若干行,每行是一趟排序后的结果,每行的每两个数据之间留一个空格。输入样例......
  • Java 列表元素自定义排序
    在Java开发过程中,有时会遇到需要对列表中元素进行自定义的排序。这样的排序往往不能由元素本身的特性(比如字符串长度、首字母顺序)判断,需要自己指定顺序。比如对汉字的数字进行排序,他们的字符串长度都为1,首字母顺序也不能得到预期的结果,因此需要自定义排序。以下是示例代码:p......
  • 代码随想录训练营第63天|拓扑排序
    117.软件构建#include<iostream>#include<vector>#include<queue>#include<unordered_map>usingnamespacestd;intmain(){intm,n,s,t;cin>>n>>m;vector<int>inDegree(n,0);//记录每个文件的入度......
  • 912.排序数组
    这一题我们要用归并排序的方法归并排序1)整体就是一个简单递归,左边排好序、右边排好序、让其整体有序2)让其整体有序的过程里用了排外序方法3)利用master公式来求解时间复杂度4)归并排序的实质时间复杂度O(N*logN),额外空间复杂度O(N)912.排序数组给你一个整数数组 nums,......
  • 03 线性结构——链表(逻辑与物理结构、分类、时间复杂度分析、相关功能定义与代码实现)
    目录1 链表是什么1.1 逻辑结构1.2物理结构1.3 相关概念2链表的分类2.1单链表2.2双链表2.3循环单链表2.4循环双链表2.5静态链表3链表的优缺点3.1优点3.2缺点3.3与数组的对比4功能定义5功能实现5.1初始化链表5.2返回链表的长度5.3在指定位......
  • [区间dp]合并石子升级版
    题目描述还记得经典题石子合并吗?现在小YYY将题目加强啦!在一个圆形操场的四周摆放着nn......
  • Java常见排序算法-插入排序
    一、算法介绍 插入排序是一种简单且常用的排序算法,它的实现思路是将列表分为已排序和未排序两部分,每次从未排序部分取出一个元素,将它插入到已排序部分的适当位置,最终将列表排序完成。即将未排序的数值直接插入有序的一组数中,使得插入后的这组数还是有序的。二、算法示意图......
  • 算法题——合并两个已排序链表(不使用额外空间)
    题目如下:        输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。        数据范围: 0≤n≤10000≤n≤1000,−1000≤节点值≤1000−1000≤节点值≤1000要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)      ......
  • 第2课-枚举、排序、贪心
    前言如果认为自己代码没问题,换行问题,边界问题等都处理了还是不行,可以试试交C++(GCC9)该类型,因为部分题目是UVA上的老题,可能不支持新版本的C++。如果提交UNKNOWNERROR,应该是没绑定UVA账号,洛谷右上角个人设置里去填写注册一下即可。除法Division思路这个题一定要注意输......