【数据结构】链表的中间节点

给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。
在这里插入图片描述
在这里插入图片描述

Definition for singly-linked list.
 struct ListNode {
      int val;
      struct ListNode *next;
 };

typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head) {
    ListNode* slow=head;
    ListNode* fast=head;
    while(fast && fast->next)
    {
        slow=slow->next;
        fast=fast->next->next;
    }
    return slow;
}

这个题和快慢指针有些相似。创建临时变量slow和fast都表示头节点。
当slow走到下一个节点的时候,fast走到了下一个节点的下一个节点。也就是fast走两个slow走一个。

当链表为奇数个时,fast到最后一个节点的时候slow刚好到中间节点。当链表为偶数个时,slow走到两个中间节点第二个节点的时候,fast则应该是到了链表最后一个节点的下一个节点。所以我们while循环的判断条件是fast不为空且fast的next指针指向的位置不为空。
最后返回中间节点。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

美国服务器vs香港服务器,哪个网站部署打开更快一些?

网站打开速度受多种因素影响,包括服务器地理位置、网络质量、带宽等。用户距离服务器越近,访问速度越快。对于中国大陆用户而言,香港的服务器可能会提供更快的网站访问体验,因为香港距离大陆较近,且网络连接通常较好。…

python高阶函数:zip()

概述与基本用法 zip() 是 Python 内置函数之一,用于将多个可迭代对象打包成一个元组序列,然后返回一个迭代器。它可以接受任意数量的可迭代对象作为参数,并将它们的元素按顺序一一对应地打包成元组。 以下是 zip() 函数的基本用法&#xff…

2024年视频号小店来了,这次是不是新的电商风口?

大家好,我是电商糖果 2024年电商行业可以说大地震了,为什么这么说呢? 因为一个非常有实力的新平台出现了。 它就是微信视频号推出的视频号小店,也可以理解为腾讯旗下的电商平台。 视频号的出现是腾讯为了对标抖音,和…

使用LSTM网络实现文本情感分析

一、实验目的: 理解循环神经网络的基本概念和原理;了解循环神经网络处理文本数据的基本方法;掌握循环神经网络处理文本数据的实践方法,并实现文本情感分析任务。 实验要求: 使用Keras框架定义并训练循环神经网络模型…

链游:未来游戏发展的新风向

链游,即区块链游戏的一种,是一种将区块链技术与游戏玩法相结合的创新型游戏。它利用区块链技术的特性,如去中心化、可追溯性和安全性,为玩家提供了一种全新的游戏体验。链游通常采用智能合约来实现游戏的规则和交易系统&#xff0…

B站无限评论暴力截留协议及教程

B站无限评论暴力截留协议及教程 B站无限评论暴力截留协议及教程,需要抓CK ,教程里面有讲如何抓取 网盘自动获取 链接:https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码:0b8x

森林消防隔膜泵的应用与前景——恒峰智慧科技

随着全球气候变暖,森林火灾频发,给生态环境和人类安全带来严重威胁。为有效应对这一挑战,森林消防领域不断引入新技术、新装备。其中,隔膜泵作为一种高效、可靠的消防设备,正逐渐受到广泛关注。本文将探讨森林消防隔膜…

c++在visual studio上的默认配置

右键 新建项 右键源文件 属性

5、Flink事件时间之Watermark详解

1)生成 Watermark 1.Watermark 策略简介 为了使用事件时间语义,Flink 应用程序需要知道事件时间戳对应的字段,即数据流中的每个元素都需要拥有可分配的事件时间戳。 通过使用 TimestampAssigner API 从元素中的某个字段去访问/提取时间戳。…

Gitflow实操以及代码审查Pull Request操作

1.背景 之前一直有用过gitflow,但是一直没有归纳技术,另一方面也是每个团队用到的gitflow都不一致。而最近做项目要用gitflow,趁此机会分享一下gitflow的操作。 2.gitflow介绍 用git一直有一个问题,就是怎么保证代码稳定性&…

LeetCode in Python 48. Rotate Image/Matrix (旋转图像/矩阵)

旋转图像/矩阵的重点是寻找旋转前后对应位置的坐标关系。 示例: 图1 旋转图像/矩阵的输入输出示意图 代码: class Solution:def rotate(self, matrix):n len(matrix)for i in range(n // 2):for j in range(i, n - 1 - i):topleft matrix[i][j]ma…

ArcGIS小技巧——由图片创建点符号

一张合格的专题地图,除了内容的准确性和丰富性以外,美观性也是必不可少的。而Arcgis符号库中的符号非常有限,有时并不能很好的展现出地图要素的特点。因此,学会自定义符号就显得尤其重要了。今天,小编将结合实例&#…

AI大模型探索之路-训练篇4:大语言模型训练数据集概览

文章目录 前言一、常用的预训练数据集1、网页2、书籍3、维基百科4、代码5、混合型数据集 二、常用微调数据集1、指令微调数据集1.1 自然语言处理任务数据集1.2 日常对话数据集1.3 合成数据集 2、人类对齐数据集 前言 在人工智能领域,构建强大的AI系统的关键步骤之一…

synchronized 之谜

序言 本文给大家介绍一下 synchronized 关键字的部分原理。 一、内存中的 Java 对象 class A {private String attr; }先引入一个问题:上面类 A 有一个属性 attr。当类 A 实例化之后的对象在内存中是如何表示的呢? 在内存中,Java 对象由三…

Prompt Engineering,提示工程

什么是提示工程? 提示工程也叫【指令工程】。 Prompt发送给大模型的指令。比如[讲个笑话]、[用Python编个贪吃蛇游戏]、[给男/女朋友写情书]等看起来简单,但上手简单精通难 [Propmpt]是AGI时代的[编程语言][Propmpt]是AGI时代的[软件工程][提示工程]是…

Docker与Linux容器:“探索容器化技术的奥秘”

目录 一、Docker概述 二、容器技术的起源: 三、Linux容器 四、Docker的出现 五、Docker容器特点: 六、Docker三大概念: 容器: 镜像: 仓库: 七、Docker容器常用命令 一、Docker概述 在云原生时代&…

漫谈车辆诊断之DTC的状态位

搞车辆诊断测试的,离不开对DTC的状态位的测试 DTC的状态位是8个bit,每个bit代表不同的意思,每个bit置1或者置0都要满足一定的条件 初学者,很容易被这个搞得头很大 今天我们就来详细拆解一下,扫除你心中的疑惑 我们以…

8个拿来即用的Python自动化脚本!

每天你都可能会执行许多重复的任务,例如阅读新闻、发邮件、查看天气、清理文件夹等等,使用自动化脚本,就无需手动一次又一次地完成这些任务,非常方便。而在某种程度上,Python 就是自动化的代名词。 今天分享 8 个非常…

发布自己的Docker镜像到DockerHub

学会了Dockerfile生成Docker image 之后,如何上传自己的镜像到 DockerHub呢?下面我以自己制作的 bs-cqhttp 镜像为例,演示一下如何将自己的镜像发布到 Docker 仓库。 1 生成自己的 Docker 镜像 1.1 实例镜像用到的文件 图1 实例镜像制作用到…

stm32f103zet6_ADC_中断_2

1基本配置请查看 ADC_1 1stm32cubeMX配置 与ADC-1 区别在于配置了NVIC 2代码设置 回调函数 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) 这个回调函数在ADC正常转换完成后被调用。当你启动一个ADC转换(使用HAL_ADC_Start_IT()或类似函数&#x…
最新文章