链表的实现(单链表、双链表、环形表)【下】超详细!!
环形链表1在介绍环形表时我们主要以题目的形式进行讲解呈现。题目链接https://leetcode.cn/problems/linked-list-cycle/对于这个题思路为快慢指针让快指针走两步慢指针走一步如果两指针相遇则说明该链表带环。具体实现如下#includestdio.h​ #includestdbool.h typedef int SLDataType; typedef struct ListNode { SLDataType x; struct ListNode* next; }ListNode; bool hasCycle(ListNode* head) { ListNode* fast head; ListNode* slow head; while (fastfast-next) { //慢指针走一步快指针走两步 slow slow-next; fast fast-next-next; if (fast slow)//快慢指针相遇 { return true; } } //两指针始终没有相遇即不存在环 return false; }但问题是为什么快慢指针相遇就会带环如何证明以及如果快指针如果走3步、4步......呢证明推理如下如果链表当中存在环快指针一次走两步慢指针一次走一步那么在慢指针即将入环前快指针已经入环且两者此刻相距为N且两者走一步距离就-1所以fast与slow距离变化为N,N-1,N-2,N-3......1,0。所以如果存在环快指针走两步慢指针走一步两者会相遇。但如果走3、4、5......呢如果慢指针走1步快指针走3步两者步差为2当slow即将入环的一刻假设fast与slow之间距离为N。①当N为偶数时快慢指针相距的距离为N,N-2,N-4,N-6......2,0(相遇)。②当N为奇数时快慢指针相距的距离为N,N-2,N-4,N-6......3,1,-1(错过)。假设环的周长为C当错过时快指针追慢指针两者相距的距离为C-1。当C-1为偶数时第二圈会相遇(①中已说明)。当C-1为奇数时不会相遇会一直错过②中已说明所以总结出来限制条件N为奇数C-1为奇数即C为偶数快慢指针不会相遇。那么这个结论到底对不对呢假设环的周长为C所以快指针走过的路程为fastLxC(走过的圈数)C-N(快慢指针相距的距离)slowL。又因为快指针一次走三步慢指针一次走一步所以3slow fast代入得3L LxCC-N,所以2L xCC-NC(c1)-N。2L肯定为偶数所以xCC-N为偶数那么就有这两种可能①偶数-偶数 偶数②奇数-奇数 偶数排除①因为限制结论为N为奇数C为偶数。那么看②则C(x1)为奇数,又因为x为跑了多少圈对过程分析影响不大所以可以忽略因此这里得出C为奇数显然与之前得出得结论不符所以N为奇数C为偶数不存在即不管怎么快慢指针始终相遇。同理快指针走4、5、6......证明同上。环形链表2题目链接https://leetcode.cn/problems/linked-list-cycle-ii/description/对于环形表2思路同样为快慢指针不过还需要一个指向头节点的指针当快慢指针相遇时让指向头节点的指针与相遇点指针步频为都走一步指向头节点指针与快慢指针相遇点指针再次相遇的地方为入环节点。#define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h​ typedef int SLDataType; typedef struct ListNode { SLDataType x; struct ListNode* next; }ListNode; ListNode* FindMidNode(ListNode* head) { ListNode* fast head; ListNode* slow head; while (fast fast-next) { //慢指针走一步快指针走两步 slow slow-next; fast fast-next-next; if (fast slow)//快慢指针相遇 { return slow; } } } ListNode* DetectCycle(ListNode* head) { //找相遇点 ListNode* meet FindMidNode(head); //相遇点与头节点相遇的位置即为入环位置 ListNode* pcur head; while (meet pcur) { if (pcur meet)//可能头尾相连并且相遇点在头节点所以先判断 { return meet; } meet meet-next; pcur pcur-next; } //链表不带环 return NULL; }证明过程如下假设相遇点M为MeetE为入环节点L为指向头节点you的指针到入环节点的距离E到M距离为X原周长为Rslow指针走的距离为LX,fast指针走的距离为LXnR又因为fast 2*slow所以LXnR 2*(LX)所以L nR-X即L (n-1)R(R-X)。又因为n最小取1(在slow入环前fast就已经走到了M点当后续又在M点相遇fast最少走了一圈所以n取值为1、2、3、4、5、6......),(n-1)R为圈数对逻辑推理影响不大取n 1所以L R-X。所以指向头节点的指针与Meet指针各走一步会在入环位置相遇。

相关新闻

阿里:QUADS稳定MoE强化学习

阿里:QUADS稳定MoE强化学习

📖标题:QUADS: Stabilizing NVFP4 Reinforcement Learning for MoE via QUantization-error Alignment across Dual Sides 🌐来源:arXiv, 2607.15810v1 🛎️文章简介 🔸研究问题:如何在使用NVFP…

2026/8/30 0:48:22 阅读更多 →
Goldberg模拟器:绕过Steam DRM实现单机游戏离线运行的原理与配置指南

Goldberg模拟器:绕过Steam DRM实现单机游戏离线运行的原理与配置指南

1. 项目概述:Goldberg Emulator是什么,以及为什么你需要它如果你是一个单机游戏爱好者,或者你的Steam库里躺着一堆因为网络问题、平台限制或者单纯想离线畅玩而无法启动的游戏,那么Goldberg Emulator(以下简称Goldberg…

2026/8/22 1:48:27 阅读更多 →
跨语言情感知识图谱构建技术与应用实践

跨语言情感知识图谱构建技术与应用实践

1. 跨语言情感知识图谱构建的挑战与机遇情感计算领域近年来面临着一个关键瓶颈:如何让AI模型在不同语言文化背景下准确捕捉情感语义。去年我们团队在构建一个覆盖中英日韩四语种的产品评论分析系统时,就深刻体会到了这个痛点——同样表达"满意"…

2026/8/25 16:34:00 阅读更多 →

最新新闻

STM32结合RFID图书管理系统:从硬件选型到云端联调全解析

STM32结合RFID图书管理系统:从硬件选型到云端联调全解析

简介:本资源是一套基于STM32平台的物联网图书管理系统毕业设计实战案例,面向高校电子、通信、自动化及物联网相关专业本科生,解决图书馆场景下图书借还、身份识别与数据管理等核心问题,适用于毕业设计选题、课程设计实践及嵌入式开…

2026/8/31 2:12:47 阅读更多 →
Python 批量图像处理实战:为活动返图打造肤色提亮与日系滤镜流水线

Python 批量图像处理实战:为活动返图打造肤色提亮与日系滤镜流水线

最近“异环日本线下活动”的一组返图在社交平台上的讨论度很高,尤其是菌烨小姐姐还原的“真红”,服装细节、妆面质感以及神态都相当到位。我们在欣赏这类高质量返图时,如果切换回开发视角,会发现线下活动返图其实是一个非常典型的…

2026/8/31 2:12:47 阅读更多 →
从虎扑评分看电竞社区数据产品:NIP vs WBG的赛后数据拆解

从虎扑评分看电竞社区数据产品:NIP vs WBG的赛后数据拆解

如果只看比分,你会觉得这只是一场普通的 BO3 常规赛:NIP 2-1 WBG,三局打满,赢家带走胜利,输家回去复盘。但如果你把视线移到赛场之外的虎扑评分区,会发现这场比赛的热度远远超出“2-1”这个数字本身。选手评…

2026/8/31 2:12:47 阅读更多 →
红外弱小目标检测与跟踪的Matlab实现:原理、代码与调参指南

红外弱小目标检测与跟踪的Matlab实现:原理、代码与调参指南

简介:本资源面向图像处理初学者与红外目标跟踪研究者,提供一套完整、可直接运行的弱小目标检测与跟踪MATLAB实现方案,聚焦于低信噪比红外图像中的目标识别与运动轨迹估计问题。压缩包共7个文件,含3个核心M函数(主程序m…

2026/8/31 2:12:47 阅读更多 →
C#调用GitHub API实现用户仓库批量下载与克隆

C#调用GitHub API实现用户仓库批量下载与克隆

如果你经常逛 GitHub,又用 C# 写工具,大概率有想过一个问题:能不能用程序把某个用户的所有公开项目一次性拉下来。我最近真写了这么一个小工具,用来备份、学习和分析开源作者的项目结构,整体效果还不错。这篇就把思路、…

2026/8/31 2:12:47 阅读更多 →
从比赛比分到用户评分:数据应用全流程开发实战

从比赛比分到用户评分:数据应用全流程开发实战

当看到 NIP 2-1 WBG 这个比分时,大多数观众只会记住胜负。但如果要把这个比分做成一个赛事应用页面,事情就没有这么简单:左边是 NIP,右边是 WBG,中间是 2:1 的比分,下方还要展示两队选手评分、比赛状态、赛…

2026/8/31 2:11:47 阅读更多 →

日新闻

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

接到一个仪表类项目,要在 LAT1189 上输出几种不同波形:正弦、三角、带可调死区的脉冲,频率和幅度都得能实时改。板子上没有 DAC,就一个定时器加几个 DMA 通道。我一开始觉得在定时器中断里改比较寄存器也能应付,后来把…

2026/8/31 0:00:05 阅读更多 →
Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

前两周调试一块带着Cortex-M3内核的板子,IDE里下载固件时突然弹出一行刺眼的错误: error: flash download failed - cortex-m3 。这种报错在嵌入式开发里太常见了,常见到很多人第一反应就是换根数据线、重插一下调试器,但重启三…

2026/8/31 0:00:05 阅读更多 →
STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

做STM32 GUI开发的朋友应该都有体会——界面搭得再漂亮,一旦屏幕切换卡成PPT,整个产品的档次瞬间就没了。早期我在LAT1212这个基于STM32的GUI工程上用TouchGFX做二次开发,最头疼的不是画界面,而是怎么让切换动画既流畅又自然。Tou…

2026/8/31 0:00:05 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/8/30 0:00:01 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/8/30 0:00:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/8/30 0:00:01 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/30 21:10:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/30 18:07:21 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/30 21:10:44 阅读更多 →