题目:设计一个算法判断一个链表是否有环,并找出入环点
分析:我们可以想象一下,在一个有环的赛道上,有两个人跑步,一个人跑得快,一个人跑得慢,试想,时间充足的情况下,跑得快
    的那个人是不是会再次遇到跑的慢的人呢?所以对于这道题,我们也可以通过快慢指针来处理,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

判断链表是否有环,并找出入环点☆相关推荐

  1. 《编程之美》3.6判断链表是否相交之扩展:链表找环方法证明

    先看看原题:<编程之美>3.6编程判断两个链表是否相交,原题假设两个链表不带环. 注:位于(*)符号之间的文字出自于:http://blog.csdn.net/v_july_v/artic ...

  2. 快慢指针判断单向链表是否有环及找环入口

    前言 关于快慢指针找环入口的这个问题,之前巴特跟我聊到过,印象比较深,今晚看学长在做的面试题,里面就出现了这个小知识. 发现有些东西不经意间就会用到,于是便出现此文.以后要努力做到善于总结,乐于总结. ...

  3. 链表:判断链表是否有环以及找入口

    141环形链表 题意: 给定一个链表,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连 ...

  4. 判断链表是否有环,并且找出链表环的接点

    1.判断链表是否有环,根据Floyd判圈法,设置两个指针,fast, slow.fast指针每次移动2个位置,slow指针每次移动1个位置.如果链表有环,fast,slow指针会再次相遇. 2.如果链 ...

  5. fatal error lnk1561: 必须定义入口点_链表中是否有环以及找环的入口问题总结

    这篇会详细介绍有关环的入口节点问题,包括代码和理论证明. 首先来看一下如何判断链表中是否存在环.方法很简单,定义两个快慢指针slow和fast,慢指针每次走一步,快指针每次走两步,如果存在环,则快慢指 ...

  6. 【IT笔试面试题整理】判断链表是否存在环路,并找出回路起点

    [试题描述]定义一个函数,输入一个链表,判断链表是否存在环路,并找出回路起点 Circular linked list: A (corrupt) linked list in which a node ...

  7. 牛客题霸 判断链表中是否有环 C++题解/答案

    牛客题霸 判断链表中是否有环 C++题解/答案 题目描述 判断给定的链表中是否有环 扩展: 你能给出空间复杂度的解法么? 题解: 在这介绍一个简便的方法:快慢指针 就是:一个指针走两步,一个指针走一步 ...

  8. 如何判断链表有环、如何判断两个链表相交

    如何判断单链表是否存在环 有一个单向链表,链表当中有可能出现"环",就像题图这样.如何用程序判断出这个链表是有环链表? 不允许修改链表结构. 时间复杂度O(n),空间复杂度O(1) ...

  9. 有苦有乐的算法 --- 可能有环也可能无环的两个单链表,判断这两个链表是否相交,如果相交返回相交的第一个节点

    题目 可能有环也可能无环的两个单链表,判断这两个链表是否相交,如果相交返回相交的第一个节点. 解析 第一步,判断链表是有环链表还是无环链表: 如果一个单链表无环,它一定有一个指向null的尾结点: 如 ...

最新文章

  1. Xilinx_ISE 14.7在Win10下选择“open project”崩溃闪退的问题
  2. 如何实现高容量大并发数据库服务 | 数据库分布式架构设计
  3. 【Python】Python入门-列表初相识
  4. android 电话号码标记,强化电话标记功能 360手机卫士3.0安卓版体验
  5. 深入分布式缓存之EVCache探秘开局篇(文末赠书)
  6. 用lighttpd+mono在Linux上面跑ASP.NET程序
  7. git clone 一部分_别再往 Git 仓库中放敏感信息了,不安全!
  8. php larvel https,laravel 解决强制跳转 https的问题
  9. OpenCV使用小札记-Cvmat与IplImage的相互转换
  10. 首都师范 博弈论 9 5 3 负激励机制下的博弈模型
  11. Android团队技术随写、随写
  12. 一分钟教你解决——浏览器代理服务器被篡改
  13. 网络封包编辑器mysql_WapCn网络封包编辑器
  14. c语言 gets getc,6.16 C语言,getchar gets getc有什么区别 分别是表示什么的
  15. Android实现电子邮箱客户端
  16. 电脑控制手机 教你实现多个手机同时打开关闭软件
  17. STM32之光照强度(BH1750)
  18. 深度学习笔记之稀疏自编码器
  19. 逼死强迫症的腾讯网迷你新闻弹窗
  20. UART的RTS和CTS

热门文章

  1. DelayQueue实现Java延时任务
  2. Devexpress Chart series 点击时获取SeriesPoint的值
  3. 关于http协议的理解
  4. 【转】单元测试基础知识
  5. 完全二叉树子节点个数
  6. MySQL_数据类型
  7. WEB开发中合理选择图片格式
  8. word2003计算机考试题,[2018职称计算机Word2003考前练习题] 2018年职称计算机考试练习题库...
  9. 7-25 念数字 (15 分)
  10. 力扣904-水果成篮(C++,总结别人的思路)