判断链表是否有环,并找出入环点☆
题目:设计一个算法判断一个链表是否有环,并找出入环点
分析:我们可以想象一下,在一个有环的赛道上,有两个人跑步,一个人跑得快,一个人跑得慢,试想,时间充足的情况下,跑得快
的那个人是不是会再次遇到跑的慢的人呢?所以对于这道题,我们也可以通过快慢指针来处理,p指针一次移动两个节点,q指针一次移动
一个节点,如果他们再次相遇了,说明链表有环,如果p指针为NULL了,说明无环。同时我们需要记录p、q各走的步数,用以确定
环的入口点。
代码如下:
struct Link {union {int data;}type;struct Link *next;
};
#include <stdio.h>
Link *isLoop(Link *h,int count) {int numP = 0, numQ = 0,numS=0;struct Link *p = h->next, *q = h->next,*s=h->next;while (q->next&&q->next->next) {p = p->next;numP++;q = q->next->next;numQ++;if (p==q) {//再次相遇,说明有环numS = count - (numQ - numP);while (numS--) {s = s->next;}return s;}}return NULL;
}
int main() {struct Link *head
判断链表是否有环,并找出入环点☆相关推荐
- 《编程之美》3.6判断链表是否相交之扩展:链表找环方法证明
先看看原题:<编程之美>3.6编程判断两个链表是否相交,原题假设两个链表不带环. 注:位于(*)符号之间的文字出自于:http://blog.csdn.net/v_july_v/artic ...
- 快慢指针判断单向链表是否有环及找环入口
前言 关于快慢指针找环入口的这个问题,之前巴特跟我聊到过,印象比较深,今晚看学长在做的面试题,里面就出现了这个小知识. 发现有些东西不经意间就会用到,于是便出现此文.以后要努力做到善于总结,乐于总结. ...
- 链表:判断链表是否有环以及找入口
141环形链表 题意: 给定一个链表,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连 ...
- 判断链表是否有环,并且找出链表环的接点
1.判断链表是否有环,根据Floyd判圈法,设置两个指针,fast, slow.fast指针每次移动2个位置,slow指针每次移动1个位置.如果链表有环,fast,slow指针会再次相遇. 2.如果链 ...
- fatal error lnk1561: 必须定义入口点_链表中是否有环以及找环的入口问题总结
这篇会详细介绍有关环的入口节点问题,包括代码和理论证明. 首先来看一下如何判断链表中是否存在环.方法很简单,定义两个快慢指针slow和fast,慢指针每次走一步,快指针每次走两步,如果存在环,则快慢指 ...
- 【IT笔试面试题整理】判断链表是否存在环路,并找出回路起点
[试题描述]定义一个函数,输入一个链表,判断链表是否存在环路,并找出回路起点 Circular linked list: A (corrupt) linked list in which a node ...
- 牛客题霸 判断链表中是否有环 C++题解/答案
牛客题霸 判断链表中是否有环 C++题解/答案 题目描述 判断给定的链表中是否有环 扩展: 你能给出空间复杂度的解法么? 题解: 在这介绍一个简便的方法:快慢指针 就是:一个指针走两步,一个指针走一步 ...
- 如何判断链表有环、如何判断两个链表相交
如何判断单链表是否存在环 有一个单向链表,链表当中有可能出现"环",就像题图这样.如何用程序判断出这个链表是有环链表? 不允许修改链表结构. 时间复杂度O(n),空间复杂度O(1) ...
- 有苦有乐的算法 --- 可能有环也可能无环的两个单链表,判断这两个链表是否相交,如果相交返回相交的第一个节点
题目 可能有环也可能无环的两个单链表,判断这两个链表是否相交,如果相交返回相交的第一个节点. 解析 第一步,判断链表是有环链表还是无环链表: 如果一个单链表无环,它一定有一个指向null的尾结点: 如 ...
最新文章
- Xilinx_ISE 14.7在Win10下选择“open project”崩溃闪退的问题
- 如何实现高容量大并发数据库服务 | 数据库分布式架构设计
- 【Python】Python入门-列表初相识
- android 电话号码标记,强化电话标记功能 360手机卫士3.0安卓版体验
- 深入分布式缓存之EVCache探秘开局篇(文末赠书)
- 用lighttpd+mono在Linux上面跑ASP.NET程序
- git clone 一部分_别再往 Git 仓库中放敏感信息了,不安全!
- php larvel https,laravel 解决强制跳转 https的问题
- OpenCV使用小札记-Cvmat与IplImage的相互转换
- 首都师范 博弈论 9 5 3 负激励机制下的博弈模型
- Android团队技术随写、随写
- 一分钟教你解决——浏览器代理服务器被篡改
- 网络封包编辑器mysql_WapCn网络封包编辑器
- c语言 gets getc,6.16 C语言,getchar gets getc有什么区别 分别是表示什么的
- Android实现电子邮箱客户端
- 电脑控制手机 教你实现多个手机同时打开关闭软件
- STM32之光照强度(BH1750)
- 深度学习笔记之稀疏自编码器
- 逼死强迫症的腾讯网迷你新闻弹窗
- UART的RTS和CTS