合并两个有序列表——C语言

news2024/10/6 16:16:33

文章目录

题目

代码

总结


题目

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

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

提示:

  • 两个链表的节点数目范围是 [0, 50]
  • -100 <= Node.val <= 100
  • l1 和 l2 均按 非递减顺序 排列

代码

LeetCode上的list1,list2是头指针,其val值有效,函数是:

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
    if(list1==NULL)
    return list2;
    if(list2==NULL)
    return list1;
    struct ListNode*ins1=list1,*ins2=list2;
    if(list1->val>list2->val)
    {
        ins1=list2;
        ins2=list1;
    }
    while(ins1->next!=NULL&&ins2!=NULL)
    {
        if(ins1->next->val<ins2->val)
        {
            ins1=ins1->next;
        }
        else if(ins1->next->val>=ins2->val)
        {
            struct ListNode*temp=ins2->next;//存储此时的ins->next,以继续遍历
            ins2->next=ins1->next;
            ins1->next=ins2;
            ins2=temp;
        }
    }
    if(ins1->next==NULL)
    ins1->next=ins2;
       if(list1->val>list2->val)
    {
        return list2;
    }
    else  return list1;
}

若list1,list2是头结点,则下面是完整代码: 

#include<stdio.h>
#include<stdlib.h>

typedef struct ListNode {
    int val;
    struct ListNode *next;
}Node;

void Creat(struct ListNode** head);
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2);

int main()
{
    int n1,n2;
    Node*list1,*list2;
    Creat(&list1);
    Creat(&list2);
    Node*list3=mergeTwoLists(list1,list2);
    list3=list3->next;
    while(list3!=NULL)
    {
        printf("%d ",list3->val);
        list3=list3->next;
    }
    return 0;
}

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)//注意LeetCode的list1是头指针,有val值
{
    if(list1==NULL)
    return list2;
    if(list2==NULL)
    return list1;
    struct ListNode*ins1=list1,*ins2=list2->next;
    while(ins1->next!=NULL&&ins2!=NULL)
    {
        if(ins1->next->val<ins2->val)
        {
            ins1=ins1->next;
        }
        else if(ins1->next->val>=ins2->val)
        {
            struct ListNode*temp=ins2->next;//存储此时的ins->next,以继续遍历
            ins2->next=ins1->next;
            ins1->next=ins2;
            ins2=temp;
        }
    }
    if(ins1->next==NULL)
    ins1->next=ins2;
    return list1;
}

void Creat(struct ListNode** head)
{
    *head=(Node*)malloc(sizeof(Node));
    int n;
    (*head)->next=NULL;
    scanf("%d",&n);
    Node*end,*ins;
    end=*head;
    for(int i=0;i<n;i++)
    {
        ins=(Node*)malloc(sizeof(Node));
        int a;
        scanf("%d",&a);
        ins->val=a;
        ins->next=NULL;
        end->next=ins;
        end=ins;
    }
}


总结

以上就是今天要讲的内容,这一题还是比较简单的,可能会遇到编写上的错误,思路容易想到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/827643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32 DMA学习

DMA简称 DMA&#xff0c;Direct Memory Access&#xff0c;即直接存储器访问。DMA传输方式无需CPU直接控制传输&#xff0c;也没有中断处理方式那样保留现场和恢复现场的过程&#xff0c;通过硬件为RAM与I/O设备开辟一条直接传送数据的通路&#xff0c;能使CPU的效率大为提高。…

第11章 Linux 实操篇-定时任务调度

11.1 crond 任务调度 crontab 进行定时任务的设置 11.1.1 概述 任务调度: 是指系统在某个时间执行的特定的命令或程序。 任务调度分类: 1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等 个别用户工作:个别用户可能希望执行某些程序&#xff0c;比如对mysql数…

新手必备!程序员入职新公司一定要准备的7件事

入职新公司的前三个月是最艰难的&#xff0c;你需要重新适应很多东西&#xff0c;新的环境、新的同事、新的业务、新的工作流程等&#xff0c;如果你是一个刚毕业进入职场的小白&#xff0c;想要让自己尽快的去适应&#xff0c;应该做好充分的准备&#xff0c;这会让你更加的从…

MIAOYUN获评“2023年度一云多芯稳定安全运行优秀案例”

2023年7月25日至26日&#xff0c;由中国信息通信研究院&#xff08;简称“中国信通院”&#xff09;、中国通信标准化协会主办的以“云领创新&#xff0c;算启新篇”为主题的“2023可信云大会”在北京成功举办。会上公布了多项前瞻领域的评估结果和2023年度最佳实践案例&#x…

Mac强制停止应用

有时候使用Mac的时候&#xff0c;某个应用卡住了&#xff0c;但是肯定不能因为一个应用卡住了&#xff0c; 就将电脑重启吧&#xff0c;所以只需要单独停止该应用即可&#xff0c;使用快捷键optioncommandesc就会出现强制停止的界面&#xff0c;选择所要停止的应用&#xff0c;…

翻转卡片游戏(力扣)

题目 在桌子上有 n 张卡片&#xff0c;每张卡片的正面和背面都写着一个正数&#xff08;正面与背面上的数有可能不一样&#xff09;。 我们可以先翻转任意张卡片&#xff0c;然后选择其中一张卡片。 如果选中的那张卡片背面的数字 x 与任意一张卡片的正面的数字都不同&#…

K8s中的Service

Service 1.Service存在的意义&#xff1f; &#xff08;1&#xff09;pod注册在service里面&#xff0c;做服务发现使用 &#xff08;2&#xff09;定义一组Pod访问策略&#xff08;负载均衡&#xff09; 2.Pod和Service关系 通过service实现Pod的负载均衡 3.常用Service类…

【Linux】——线程安全

目录 关于线程进程的问题 可重入与线程安全 常见的线程安全的情况 常见的不可重入的情况 常见的可重入的情况 可重入与线程安全区别 可重入与线程安全联系 Linux线程互斥 进程线程间的互斥相关概念 互斥量mutex 互斥量mutex常用接口 互斥量改造抢票系统 互斥量的原…

回归分析学习

回归分析 什么是回归分析简单线性回归线性回归&#xff08;linear regression&#xff09;线性假设如何拟合数据线性回归的基本假设 损失函数(loss function)最小二乘法(Least Square, LS)梯度下降法&#xff08;Gradient Descent&#xff0c;GD&#xff09; 多元线性回归(mult…

Python高阶技巧 设计模式

设计模式 设计模式是一种编程套路&#xff0c;可以极大的方便程序的开发。 最常见、最经典的设计模式&#xff0c;就是我们所学习的面向对象了。 除了面向对象外&#xff0c;在编程中也有很多既定的套路可以方便开发&#xff0c;我们称之为设计模式&#xff1a; 单例、工厂…

Java日期和时间处理入门指南

文章目录 1. 日期操作 - java.util.Date1.1 构造方法1.2 常用方法 2. 日期格式化 - java.text.SimpleDateFormat2.1 获取对象2.2 方法 3. 获取时间分量 - java.util.Calendar3.1 时间分量3.2 创建对象3.3 常用的时间分量3.4 获取时间分量3.5 设置时间分量 结语 引言&#xff1a…

GEE学习03-Geemap配置与安装,arcgis pro自带命令提示符位置等

跟着吴秋生老师的视频开展的学习&#xff0c;首先购买了云&#xff0c;用来设置全局。 1、尝试使用arcgis pro自带的conda conda env list查看电脑上环境&#xff0c;我自己电脑上有三个环境&#xff0c;使用的arcgis pro python克隆的环境作为的默认的环境 但是这样的前提…

嵌入式通信协议总结

1.并行通信与串行通信 并行通信通常为8根&#xff0c;一次传送多位&#xff0c;串行通信为一根线&#xff0c;一次传送一位数据&#xff0c;依次传送。 很明显&#xff0c;前者速度更快&#xff0c;但是消耗资源&#xff0c;后者资源消耗少&#xff0c;但速度慢。 2.单工与双…

堆栈指针的介绍

目录 单片机堆栈指针的介绍 引用 一、堆栈指针sp的简介 1、堆栈的两种方式&#xff08;向上模型与向下模型&#xff09; 2、两种模型的优缺点 二、堆栈的实现方法 深入理解ARM三个寄存器 三级流水线 三个寄存器 栈的整体作用 1. 保护现场 2. 传递参数 3. 临时变量…

最新版Android13使用Notification,Notification的基本使用和进阶使用

一、使用Notification 1、创建一个通知 1.1 注册一个渠道 在Android13&#xff0c;版本通知的使用发生了新的变化。 首先我们需要创建一个NotificationManager用于管理通知。 //创建notificationManager对通知进行管理 NotificationManager notificationManager getSyste…

Mr. Cappuccino的第57杯咖啡——简单手写Mybatis大致原理

简单手写Mybatis大致原理 大致原理项目结构项目代码代码测试 大致原理 底层基于JDK动态代理技术实现 项目结构 项目代码 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns…

在 TDosCommand 组件中执行多个命令

在 TDosCommand 组件中执行多个命令可以通过在命令行中使用“&&”或“&”符号来实现。其中&#xff0c;“&&”符号表示前一个命令执行成功后才会执行下一个命令&#xff0c;“&”符号表示前一个命令执行完成后立即执行下一个命令。下面是一个示例程序&…

首页和图表的定制

首页就是刚刚那些在静态资源扫描文件下叫 index.html 的文件 头像

Netty+springboot开发即时通讯系统笔记(一)

业务部分从sql开始&#xff1a; /*Navicat Premium Data TransferSource Server : localhostSource Server Type : MySQLSource Server Version : 50740Source Host : localhost:3306Source Schema : im-coreTarget Server Type : MySQLTarge…

代码随想录算法训练营之JAVA|第十八天| 235. 二叉搜索树的最近公共祖先

今天是第 天刷leetcode&#xff0c;立个flag&#xff0c;打卡60天&#xff0c;如果做不到&#xff0c;完成一件评论区点赞最高的挑战。 算法挑战链接 235. 二叉搜索树的最近公共祖先https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/descriptio…