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

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

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

2026/7/26 7:20:47 阅读更多 →
跨语言情感知识图谱构建技术与应用实践

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

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

2026/7/26 7:19:47 阅读更多 →

最新新闻

如何快速掌握douyin-downloader:抖音批量下载完整指南

如何快速掌握douyin-downloader:抖音批量下载完整指南

如何快速掌握douyin-downloader:抖音批量下载完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppo…

2026/7/26 10:59:13 阅读更多 →
Windows Defender完全移除指南:如何彻底禁用系统自带杀毒软件

Windows Defender完全移除指南:如何彻底禁用系统自带杀毒软件

Windows Defender完全移除指南:如何彻底禁用系统自带杀毒软件 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirr…

2026/7/26 10:59:13 阅读更多 →
LLaMA-Factory微调MiniCPM-o-2_6-GPTQ实战:医疗/教育领域定制化模型训练指南

LLaMA-Factory微调MiniCPM-o-2_6-GPTQ实战:医疗/教育领域定制化模型训练指南

LLaMA-Factory微调MiniCPM-o-2_6-GPTQ实战:医疗/教育领域定制化模型训练指南 【免费下载链接】MiniCPM-o-2_6-GPTQ 项目地址: https://ai.gitcode.com/OpenBMB/MiniCPM-o-2_6-GPTQ MiniCPM-o-2_6-GPTQ是一款高效的量化模型,支持通过LLaMA-Factor…

2026/7/26 10:59:13 阅读更多 →
实测!Gemma-4-12B-coder-OptiQ-4bit能否通过程序员终极测试:编写回文检测函数

实测!Gemma-4-12B-coder-OptiQ-4bit能否通过程序员终极测试:编写回文检测函数

实测!Gemma-4-12B-coder-OptiQ-4bit能否通过程序员终极测试:编写回文检测函数 【免费下载链接】gemma-4-12B-coder-fable5-composer2.5-v1-OptiQ-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/gemma-4-12B-coder-fable5-composer…

2026/7/26 10:59:13 阅读更多 →
人工智能技术体系:从机器学习到深度学习的演进与应用

人工智能技术体系:从机器学习到深度学习的演进与应用

1. 人工智能技术体系全景解析在当今技术领域,人工智能(AI)已成为最具变革性的力量之一。作为一名从业十余年的AI工程师,我见证了从早期基于规则的专家系统到如今大模型时代的完整演进历程。要真正理解AI领域的技术脉络&#xff0c…

2026/7/26 10:59:13 阅读更多 →
TMS320VC5409A DSP的XIO2接口与DMA控制器深度解析与实战应用

TMS320VC5409A DSP的XIO2接口与DMA控制器深度解析与实战应用

1. 项目概述与核心价值如果你正在使用或评估TI的TMS320C54x系列DSP进行产品开发,尤其是涉及到大量外部存储器访问或高速数据搬移的场景,那么TMS320VC5409A这款芯片的两个核心增强特性——增强型外部并行接口(XIO2)和功能更强的DMA…

2026/7/26 10:58:13 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻