链表的实现(单链表、双链表、环形表)【下】超详细!!
环形链表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/7/26 7:20:39阅读更多 →
Goldberg模拟器:绕过Steam DRM实现单机游戏离线运行的原理与配置指南

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

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

2026/7/26 7:20:39阅读更多 →
输入场景下的文化传播技术实践与优化

输入场景下的文化传播技术实践与优化

1. 项目背景与核心价值这个标题让我想起十年前刚接触文化传播工作时,遇到的一个典型困境:如何让严肃的文化内容在碎片化阅读时代真正触达受众。当时我们团队尝试过各种形式——长篇讲座没人听,短视频又容易流于表面,直到发现"…

2026/7/26 7:18:39阅读更多 →
Video DownloadHelper CoApp:解决浏览器视频下载难题的终极配套应用

Video DownloadHelper CoApp:解决浏览器视频下载难题的终极配套应用

Video DownloadHelper CoApp:解决浏览器视频下载难题的终极配套应用 【免费下载链接】vdhcoapp Companion application for Video DownloadHelper browser add-on 项目地址: https://gitcode.com/gh_mirrors/vd/vdhcoapp 你是否曾遇到过想要下载网页视频却无…

2026/7/26 9:45:10阅读更多 →
FolderMove工具:Windows应用无损迁移的终极方案

FolderMove工具:Windows应用无损迁移的终极方案

1. 工具定位与核心价值FolderMove是我在多年系统维护工作中发现的一个真正解决痛点的工具。它的核心功能可以用一句话概括:在不破坏软件原有功能的前提下,将已安装的应用程序从原目录迁移到新位置。这个看似简单的功能,在实际工作中能节省大量…

2026/7/26 9:45:10阅读更多 →
人脸识别技术中的精度与隐私平衡测试实践

人脸识别技术中的精度与隐私平衡测试实践

1. 人脸识别技术的核心矛盾与测试挑战在智慧城市建设和数字化转型浪潮中,人脸识别技术已成为身份认证的核心手段。作为一名长期从事计算机视觉测试的工程师,我发现这个领域始终存在一个根本性矛盾:识别精度与隐私保护之间的天然对立。这种对立…

2026/7/26 9:45:10阅读更多 →
基于ResNet50的蘑菇识别系统开发实践

基于ResNet50的蘑菇识别系统开发实践

1. 项目背景与核心价值蘑菇种类识别系统是一个典型的计算机视觉与Web应用结合的实践项目。我在去年指导本科生毕业设计时,发现很多同学对如何将深度学习模型整合到实际业务系统中存在困惑。这个项目正好能解决这个问题——它完整展示了从数据采集、模型训练到Web系统…

2026/7/26 9:45:10阅读更多 →
Docker快速搭建MySQL主从复制集群实战

Docker快速搭建MySQL主从复制集群实战

1. 项目概述MySQL主从复制是数据库高可用架构中最基础也最经典的解决方案。我在过去五年里为十几家企业部署过不同规模的MySQL主从集群,从单机测试环境到跨机房生产系统都有涉及。今天要分享的是基于Docker环境快速搭建MySQL主从集群的完整方案,这个方案…

2026/7/26 9:45:10阅读更多 →
打造私人游戏云:Sunshine游戏串流服务器完全指南

打造私人游戏云:Sunshine游戏串流服务器完全指南

打造私人游戏云:Sunshine游戏串流服务器完全指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否曾梦想在任何设备上畅玩高性能PC游戏?厌倦了商业游戏…

2026/7/26 9:43:10阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →