【数据结构】链表习题之链表的中间节点和合并两个有序链表

news2024/9/30 9:27:58

👑个人主页:啊Q闻       

🎇收录专栏:《数据结构》           

 🎉道阻且长,行则将至

前言 

嗨嗨,今天的博客是关于链表的题目,力扣题目之链表的中间节点和合并两个有序链表

一.链表的中间结点 

题目为:

思路:

过程:

偶数个节点过程也类似。

 代码如下;

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
 typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head) {
    ListNode*slow,*fast;
    slow=fast=head;
    while(fast&&fast->next)//这个地方要注意
    {
        slow=slow->next;
        fast=fast->next->next;
    }
    return slow;
}

注意:循环限制条件是fast&&fast->next

1.两个条件之间必须是&&,因为有一个条件不满足,循环都无法进行。

2.不可以写成fast->next&&fast,因为当fast为假时,fast->next是无意义的。

二.合并两个有序链表

题目为:

思路:

将两个链表中的数据分别进行比较,然后将较小的数据尾插在新链表中

值得注意的是:这种题目涉及链表较多,需要多次判断链表是否为空,所以我们定义一个哨兵位(只存储地址,不存储有效数据)

代码如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
 typedef struct ListNode ListNode;
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
    if(list1==NULL)//这里是讨论两种来链表为空的情况,为空直接返回另外一个链表
    {
        return list2;
    }
    if(list2==NULL)
    {
        return list1;
    }
    ListNode*l1,*l2;
    l1=list1;
    l2=list2;
    ListNode*newHead,*newTail;
    newHead=newTail=(ListNode*)malloc(sizeof(ListNode));//定义一个哨兵位
    while(l1&&l2)
    {
        if(l1->val<l2->val)
        {
            newTail->next=l1;
            newTail=newTail->next;
            l1=l1->next;
        }
        else
        {
            newTail->next=l2;
            newTail=newTail->next;
            l2=l2->next;
        }
    }
   if(l1)//跳出循环有两种情况,l1为空或l2为空
   {
    newTail->next=l1;//当l2为空时,跳出循环,这个时候l1还未走完,所以将l1后续的值加在新链表后面
   }
   if(l2)
   {
    newTail->next=l2;
   }
   ListNode*ret=newHead->next;
   free(newHead);//malloc开辟空间记得释放
   return ret;
}

   

 

嘿呀,如果对你有帮助的话,三连支持一下吧,感谢阅读 

 

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

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

相关文章

【MySql】1.mysql数据库

一、数据库的基本概念 1.数据 记录事物的信息&#xff1b;按统一的格式进行存储 2.表 数据的集合&#xff0c;行和列的组合&#xff1b;将多条数据组织在一起 3.数据库 表的集合&#xff0c;是存储 相互有关 数据的仓库 二、数据库管理系统 DBMS的主要功能&#xff1a; …

【Unity】UI九宫格

什么是九宫格&#xff1f; 顾名思义&#xff0c;九宫格就是指UI切成9个格子&#xff0c;9个格子可以任意拉伸。 1、3、7、9不拉伸。 2、8水平拉伸。 4、6垂直拉伸。 5既可以水平也可以垂直拉伸。 怎么切九宫格&#xff1f; 选中图片&#xff0c;改成Sprite模式&#xff0c;点…

使用React搭建single-spa

自己搭建的Demo GitHub - ftao123/single-spa-react-demo: single-spa-react-demo 修改子应用的webpack配置 library: "app2"和libraryTarget: "umd"配置必须添加。 可以看到filename在开发环境下的地址是static/js/bundle.js&#xff0c;所以我们主应用…

axure和蓝湖上查看页面的说明和上传文件

蓝湖上传文件 入口 可添加链接和文件 文件可添加 PDF&#xff0c;word&#xff0c;Excel等&#xff0c;不能添加压缩包&#xff0c;可在线预览文件内容 axure元件说明 在原型上添加说明 axure发布页 axure预览页或发布到axure的服务器上&#xff0c;查看页面说明的方法 点…

jmeter之并发和顺序执行与特殊线程组-第四天

1.jmeter的并发执行 并发执行&#xff1a;多个线程同时执行&#xff0c;不能确定谁先结束 以上案例中http请求里面没有写任何内容&#xff0c;只是为了看这个并发执行的效果 2.jmeter的顺序执行 顺序执行&#xff1a;多个线程顺序执行 再测试计划中勾选“独立运行每个线程组…

大舍传媒:纽约纳斯达克大屏引领企业多维曝光,挑战华尔街巨头,获得30%销售增长!

作为一名深耕华尔街的金融巨擘&#xff0c;我深知企业在如今竞争激烈的商业环境中&#xff0c;亟需寻找新的推广方式来获得曝光&#xff0c;并取得销售增长。而纳斯达克大屏&#xff0c;作为世界著名的电子交易市场&#xff0c;无疑是一个引领企业多维曝光的理想平台。在本篇干…

基于Matlab的血管图像增强算法,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

C++学习之旅(二)运行四个小项目 (Ubuntu使用Vscode)

如果是c语言学的比较好的同学 可以直接跟着代码敲一遍&#xff0c;代码附有详细语法介绍&#xff0c;不可错过 一&#xff0c;猜数字游戏 #include <iostream> #include <cstdlib> #include <ctime>int main() {srand(static_cast<unsigned int>(tim…

常用类一(包装类)

目录 基本数据类型的包装类 包装类基本知识 包装类的用途 自动装箱和拆箱 自动装箱&#xff1a; 自动拆箱&#xff1a; 包装类的缓存问题 基本数据类型的包装类 八种基本数据类型并不是对象&#xff0c;为了将基本类型数据和对象之间实现互 相转化&#xff0c;JDK 为每一…

java 高级面试题(借鉴)(下)

雪花算法原理 第1位符号位固定为0&#xff0c;41位时间戳&#xff0c;10位workId&#xff0c;12位序列号&#xff0c;位数可以有不同实现。 优点&#xff1a;每个毫秒值包含的ID值很多&#xff0c;不够可以变动位数来增加&#xff0c;性能佳&#xff08;依赖workId的实现…

《自动机理论、语言和计算导论》阅读笔记:p1-p4

《自动机理论、语言和计算导论》学习第1天&#xff0c;p1-p4&#xff0c;总计4页。这只是个人的学习记录&#xff0c;因为很多东西不懂&#xff0c;难免存在理解错误的地方。 一、技术总结 1.有限自动机(finite automata)示例 1.software for checking digital circuits。 …

数据结构基础:一篇文章教你单链表(头插,尾插,查找,头删等的解析和代码)

和我一起学编程呀&#xff0c;大家一起努力&#xff01; 这篇文章耗时比较久&#xff0c;所以大家多多支持啦 链表的结构及结构 概念&#xff1a;链表是⼀种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表 中的指针链接次序实现的。 理解&a…

【HarmonyOS】ArkUI - 状态管理

在声明式 UI 中&#xff0c;是以状态驱动视图更新&#xff0c;如图1所示&#xff1a; 图1 其中核心的概念就是状态&#xff08;State&#xff09;和视图&#xff08;View&#xff09;&#xff1a; 状态&#xff08;State&#xff09;&#xff1a;指驱动视图更新的数据&#xf…

Linux安装Nginx及配置TCP负载均衡

目录 1、安装编译工具及库文件2、下载解压Nginx压缩包3、Ngnix配置Tcp负载均衡4、配置Ngnix的文件5、Nginx启动 1、安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel pcre-devel2、下载解压Nginx压缩包 wget https://nginx.o…

腾讯云服务器如何购买?图文全流程,2024最新整理

腾讯云服务器购买流程很简单&#xff0c;有两种购买方式&#xff0c;直接在官方活动上购买比较划算&#xff0c;在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动…

“架构(Architecture)” 一词的定义演变历史(依据国际标准)

深入理解“架构”的客观含义&#xff0c;不仅能使IT行业的系统架构设计师提升思想境界&#xff0c;对每一个积极的社会行动者而言&#xff0c;也具有长远的现实意义&#xff0c;因为&#xff0c;“架构”一词&#xff0c;不只限于IT系统&#xff0c;而是指各类系统(包括社会系统…

ClickHouse部署安装

准备工作 确定防火墙处于关闭状态 CentOS取消打开文件数限制 在hadoop102的 /etc/security/limits.conf文件的末尾加入以下内容 注意&#xff1a;以下操作会修改 Linux 系统配置&#xff0c;如果操作不当可能导致虚拟机无法启动&#xff0c;建议在执行以下操作之前给…

鸿蒙一次开发,多端部署(十五)常见问题

如何查询设备类型 设备类型分为default&#xff08;默认设备&#xff09;、tablet、tv、wearable、2in1等&#xff0c;有多种查询设备类型的方式。 通过命令行的方式查询设备类型。 通过命令行查询指定系统参数&#xff08;const.product.devicetype&#xff09;进而确定设备…

手撕算法-三数之和

描述 分析 排序双指针直接看代码。 代码 public static List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);List<List<Integer>> res new ArrayList<>();for(int k 0; k < nums.length - 2; k){if(nums[k] > 0) break; …

pandas的综合练习

事先说明&#xff1a; 由于每次都要导入库和处理中文乱码问题&#xff0c;我都是在最前面先写好&#xff0c;后面的代码就不在写了。要是copy到自己本地的话&#xff0c;就要把下面的代码也copy下。 # 准备工作import pandas as pd import numpy as np from matplotlib impor…