[转]给定单链表,检测是否有环。如果有环,则求出进入环的第一个节点
转自:http://blog.csdn.net/dengsi23/article/details/7984291
判断单向链表是否有环,可以采用快指针与慢指针的方式来解决。即定义一个快指针fast和一个慢指针slow,使得fast每次跳跃两个节点,slow每次跳跃一个节点。如果链表没有环的话,则slow与fast永远不会相遇(这里链表至少有两个节点);如果有环,则fast与slow将会在环中相遇。判断出链表有环以后,则需要算出进入环的第一个节点。在fast与slow第一次相遇后,设置一个节点pNode从链表的头部开始遍历,每次只遍历一个节点。这样,当fast与slow再次相遇时,pNode所处的位置便是环的首部。以下该问题的实现源码(C语言描述):
LNode* GetLoopNode(LNode* head) {//前置条件的判断if (!head){return NULL;}//定义一个快指针和一个慢指针LNode* fast = head;LNode* slow = head;while (fast && (fast->next)){fast = fast->next->next;slow = slow->next;if (fast == slow){//如果有环,则返回环的第一个节点slow = head;while (1){fast = fast->next;slow = slow->next;if (fast == slow){break;}}return slow;}}return NULL; }
EOF
转载于:https://www.cnblogs.com/lihaozy/archive/2012/12/07/2807542.html
[转]给定单链表,检测是否有环。如果有环,则求出进入环的第一个节点相关推荐
- android 环信客服 自动登出,Android环信聊天头像昵称显示解决方案
从消息扩展中获取昵称和头像 昵称和头像的获取:把用户基本的昵称和头像的URL放到消息的扩展中,通过消息传递给接收方,当收到一条消息时,则能通过消息的扩展得到发送者的昵称和头像URL,然后保存到本地数据 ...
- php单链表检测有没有环,写一段代码判断单向链表中有没有形成环,如果形成环,请找出环的入口处,即P点...
首先,关于单链表中的环,一般涉及到以下问题: 1.给一个单链表,判断其中是否有环的存在: 2.如果存在环,找出环的入口点: 3.如果存在环,求出环上节点的个数: 4.如果存在环,求出链表的长度: 5. ...
- 环境建环和给排水工程计算机应用试卷,环境建环和给水排水工程计算机应用教材内容...
环境建环和给水排水工程计算机应用教材内容 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 环境建环和给水排水工程计算机在专业中应用当 ...
- 给定单链表,检测是否有环等系列考题
题一. 给定单链表,检测是否有环. 使用两个指针p1,p2从链表头开始遍历,p1每次前进一步,p2每次前进两步.如果p2到达链表尾部,说明无环,否则p1.p2必然会在某个时刻相遇(p1 ...
- 【数据结构与算法】之深入解析如何确定单链表有环并求环的入口和长度
一.检测单链表中存在环 ① 环的定义 单链表中结点都是一个结点指向下一个结点这样一个一个链接起来的,直到尾结点的指针域没有指向,单链表就到此结束. 链表有环的定义是,链表的尾结点的指针域并为空,指向了 ...
- php单链表检测有没有环,PHP 和 Go 实现环路链表检测
环路链表检测 给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点. 有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路. 解题思路 1 遍历链表, ...
- 链表题目----5 相交链表 和 环形链表 和 返回链表开始入环的第一个节点
相交链表 思路 链表交叉不可能是x型 因为有可能两个链表不等长,所以我们必须让他们从同一起跑位置去起跑 从同一起跑位置出发,依次比较每个结点的地址是否相同 /*** Definition for si ...
- 设计一算法,判断给定单链表的长度是奇数还是偶数
设计一算法,判断给定单链表的长度是奇数还是偶数 #include <stdio.h> #include <stdlib.h> typedef int ElemType; typ ...
- python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图
python数据结构和算法 参考 本文github 计算机科学是解决问题的研究.计算机科学使用抽象作为表示过程和数据的工具.抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性.Pytho ...
最新文章
- Linux df -h 显示磁盘空间满,但实际未占用满——问题分析
- NeurIPS 2020放榜,接收率史上最低!AC:低接收率带不来有趣的论文
- 2021-07-23 图像分割
- 优启通怎么重装系统win10_重装系统失败?小编教你安全给神舟战神GX9 Pro重装win10系统方法...
- 根据两个日期字符串,格式为(YYYY-MM-DD),获取年龄,保留两位小数但不四舍五入...
- C#控制网页并自动输入
- 记录点滴——2019年终总结
- 三层链路冗余-单宿主网络(拓扑图及思路)
- 三分钟看懂二极管的所有基础知识点
- Python实现ABC人工蜂群优化算法优化支持向量机回归模型(SVR算法)项目实战
- pyqt5 等待界面 (QMovie 加载 gif)
- 题目0171-相同数字的积木游戏1
- php pdo oracle操作类,一个基于PDO的数据库操作类
- root权限获取排行榜,root权限软件排行榜
- ERP 基础数据 概念
- vscode下载安装和配置使用
- 12-17-2018学习-2.310.5
- 智慧宁夏大数据缘何“跑”不起来
- 联系电脑清除BIOS密码方法
- 启动visdom报错,系统找不到指定的路径
热门文章
- V商变现的逻辑和自媒体变现的逻辑
- 最近发现了一条新的“致富”路
- 互联网的大厂就那么几家,所以很多员工跳槽后都是互相流动的
- 设置darktable为中文
- java 注释工具栏_eclipse/intellij idea 查看java源码和注释方法
- macappstore登不上去_丈夫在外与多人暧昧,妻子气愤不已,可他却怒怼:这还不都是你逼的...
- Assembly generation failed Referenced assembly ‘xxx’ does not have a strong name
- SpringMVC框架、Spring boot框架、SSM區別
- Bzoj 4371: [IOI2015]sorting排序 二分
- Web常见漏洞修复建议