首页/新闻资讯/正文详情

链表的实现(单链表、双链表、环形表)【下】超详细!!

发布时间:2026/11/12 16:05:48 来源:云帆数科 栏目:资讯中心
链表的实现(单链表、双链表、环形表)【下】超详细!!
环形链表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/10/25 18:56:03

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

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

迁移学习核心技术解析与工程实践指南
迁移学习核心技术解析与工程实践指南

1. 迁移学习的概念与价值迁移学习(Transfer Learning)是机器学习领域一项突破性技术,它让模型能够将已学到的知识迁移到新任务中。就像人类学会骑自行车后更容易掌握电动车驾驶一样,迁移学习让AI模型不再需要从零开始学习每个新任… · 2026/10/26 5:28:03

电工证审核 在哪?三门峡水利工人必看的上岗必备指南
电工证审核 在哪?三门峡水利工人必看的上岗必备指南

电工证审核 在哪?三门峡水利工人必看的上岗必备指南 之前考的证在外省能不能转过来?这个问题,我作为三门峡水利工程一线工人,也问过不少同行。很多人拿着外地的电工证,到了本地却用不上,要么不被认可,要么流程复杂,耽误工期。其实,电工证审核在哪,… · 2026/11/12 16:05:32

电工证要怎么换新的 电子证书怎么申请才靠谱
电工证要怎么换新的 电子证书怎么申请才靠谱

电工证要怎么换新的 电子证书怎么申请才靠谱 怕考不过白交培训费,这事儿我太懂了。去年有位郑州的学员,花了三千多报了个电工证培训班,结果考试时一道题都不会,直接白忙活。现在国家推行电子证书,很多人想换新证,但不知道流程、怕被坑,更怕交了钱拿不… · 2026/11/12 16:05:32

绥宁考电工证在哪里考 官方报名入口在哪
绥宁考电工证在哪里考 官方报名入口在哪

绥宁考电工证在哪里考 官方报名入口在哪 你还在为找不到【绥宁考电工证在哪里考】的官方报名入口发愁吗?特种作业证是许多工种上岗的硬门槛,尤其是电工证,没有它连最基本的入职资格都拿不到,更别说干点像样的活儿了。今天我们就来聊聊,绥宁本地的电工证… · 2026/11/12 16:05:32

池州高压电工证在哪考多久拿证?学历不高也能报!
池州高压电工证在哪考多久拿证?学历不高也能报!

池州高压电工证在哪考多久拿证?学历不高也能报! 你是不是学历不高,担心报不了高压电工证?别慌,池州高压电工证在哪考这个问题,其实比你想的要简单。很多人以为学历不够就报不了名,但实际操作中,只要满足基本条件,学历不是最大的障碍。那高压电工证多… · 2026/11/12 16:05:32

电工证考试时候别被坑了!郑州报考避坑指南
电工证考试时候别被坑了!郑州报考避坑指南

电工证考试时候别被坑了!郑州报考避坑指南 学历不高怕报不上名?别慌,电工证考试时候其实并没有你想象的那么难,关键是方法对了。很多人因为不了解流程、信息不对称,要么错过了报名时间,要么花了冤枉钱,结果还考不上。今天我就从南阳初次报考的角度出发… · 2026/11/12 16:05:32

电工证和职称证的实操考试心里没底怕挂科?电子证书怎么查?手把手教你避坑
电工证和职称证的实操考试心里没底怕挂科?电子证书怎么查?手把手教你避坑

电工证和职称证的实操考试心里没底怕挂科?电子证书怎么查?手把手教你避坑 实操考试心里没底怕挂科,这是多少准备考电工证的同行都经历过的事。尤其是在郑州这样的劳务市场,项目多、人员流动快,很多班组负责人对电工证的报考流程、考试内容、合格标准都不… · 2026/11/12 16:04:32

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/12 14:09:01

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/11 19:07:25

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/11 17:14:54

电工证设年审有效期多久官方回应来了,工地太忙根本没时间复习考试
电工证设年审有效期多久官方回应来了,工地太忙根本没时间复习考试

电工证设年审有效期多久官方回应来了,工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这是很多一线电工、焊工、高处作业人员的真实写照。尤其是像你这样刚毕业的鹤壁工程类毕业生,一边要找工作,一边要考证,时间紧张,复习效率低。但你可能不知… · 2026/11/12 0:00:56

新乡电工证实操怕挂科?电工作业动漫图+报考避坑全解析
新乡电工证实操怕挂科?电工作业动漫图+报考避坑全解析

新乡电工证实操怕挂科?电工作业动漫图+报考避坑全解析 实操考试心里没底怕挂科?你不是一个人。新乡的水利工程从业者,很多在报考电工证的时候都担心自己操作不熟练、考试不通过, 千万别踩坑 ,选对资料和方法真的能提高通过率。… · 2026/11/12 0:00:56

网电工证千万别踩坑:实操考试心里没底怕挂科怎么破?
网电工证千万别踩坑:实操考试心里没底怕挂科怎么破?

网电工证千万别踩坑:实操考试心里没底怕挂科怎么破? 实操考试心里没底怕挂科,这是很多准备报考【网电工证】的学员最真实的感受。尤其是在高压电工、低压电工等工种上,操作环节的容错率极低,一旦失误就可能直接被判定不合格。很多人因为担心挂科而放弃考… · 2026/11/12 0:00:56

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 4:35:34

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 4:36:01

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/11 17:15:20

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码