#判断一个单链表中是否存在 环。
#设置两个指针(fast, slow),初始值都指向头,slow每次前进1步,fast每次前进2步,

大概的思路如下:
如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。
如果链表不存在环,则fast必定先指向NULL,而slow后指向NULL。

如果存在环,则返回1;     否则,返回0

int IsExitsCircle(list *head)
{assert(NULL != head);list *slow = head, *fast = head;while (fast && fast->next) {slow = slow->next;fast = fast->next->next;if ( slow == fast ){break; }}return !(fast == NULL || fast->next == NULL);
}

根据上面的思路,可以找出环开始出现的地方:slow与fast指针相遇后,让slow指向head,然后 slow与fast同时设置步长为1进行遍历,两者同时指向同一个节点时就是环开始出现的地方,代码如下:

list *FindCircleNode(list *head)
{list *slow = head, *fast = head;//从头开始出发if (NULL == head){return NULL;}while (fast && fast->next) {slow = slow->next;fast = fast->next->next;if ( slow == fast ){break;}}if ((NULL == fast) || (NULL == fast->next)){return NULL;}slow = head;while (slow != fast){slow = slow->next;fast = fast->next;}return slow;
}

判断一个单链表中是否存在环相关推荐

  1. 单链表——判断一个单链表中是否有环

    2019独角兽企业重金招聘Python工程师标准>>> package jxau.lyx.link;/*** * @author: liyixiang* @data:2014-10- ...

  2. 判断一个单链表中是否有环

    思路:快慢指针实现 用两个指针,一个指针一次走一步,另一个指针一次走两步,如果存在环,则这两个指针会在环内相遇,时间复杂度为O(n) /*** 检测单链表中是否有环*/public static bo ...

  3. 【数据结构】判断一个单链表中各结点的值是否有序

    count记录的是单链表的总长 count1记录的是升序的结点的个数 count2记录的是降序的结点的个数 如果count1或者count2等于count,那么就说明该序列是升序或者降序的. 稍加改进 ...

  4. 判断单链表中的元素是否递增_检测单链表中是否有环(C语言)

    检测单链表中是否有环(C语言) 方法:双指针法思路 使用两个指针,两个初始时都指向链表的头结点,然后one指针一次加一,另一个two指针一次加二. 在链表有环时,two指针与one指针相等就说明有环. ...

  5. 用python 判断一个单链表是否有环

    文章目录 用python 判断一个单链表是否有环. 第二次做DAY20201130 [141. 环形链表](https://leetcode-cn.com/problems/linked-list-c ...

  6. 判断一个单链表是否有环,若有,找出环的入口节点

    题目:如何判断一个单链表是否有环?若有环,如何找出环的入口节点. 一.单链表是否有环 思路分析: 单链表有环,是指单链表中某个节点的next指针域指向的是链表中在它之前的某一个节点,这样在链表的尾部形 ...

  7. 数据结构和算法设计专题之---判断单链表中是否有环,环的长度,环的入口节点...

    题目: 给定一个单链表,只给出头指针head: 1.如何判断是否存在环? 2.如何知道环的长度? 3.如何找出环的连接点在哪里? 4.带环链表的长度是多少?   解法: 1.对于问题1,使用追赶的方法 ...

  8. c语言 判断链表之中是否有环,判断单链表中是否存在环(网上说的笔试题)

    2015-10-06 06:30:02 阅读( 83 ) #include "stdafx.h" typedef char eleType;    // 定义链表中的数据类型 ty ...

  9. 如何判断一个单链表是否有环?

    快慢指针查询,快指针每次跳两个,慢指针每次跳一个,如果两指针相等时,就证明有环 环的入口: 用两个指针,一个指向快慢指针相交点(这里就是慢指针走,慢指针在走快指针的一半就相当于快指针走的路了,还会到这 ...

最新文章

  1. 亚洲与非洲:中国支付巨头的海外进击
  2. 2015服务器性能排名,【新年大礼】史上最全CPU天梯图2015年V3.5版 全平台性能对比参考...
  3. 网络技术术语英汉对照
  4. 【渝粤题库】陕西师范大学180208 产品管理 作业(专升本)
  5. 利用指针编程实现:删除一个字符串中的所有空格 c语言,C语言必考100题解析汇报...
  6. 分割函数python_python strip() 函数和 split() 函数的详解及实例
  7. MySQL 四种链接
  8. Matlab for Mac 中文路径乱码解决
  9. 在Ubuntu系统中重置root密码
  10. Kotlin-Android-Extensions:不仅仅是替代findViewById
  11. 计算机ps特效教程,制作木质电脑桌的PS滤镜教程
  12. 信号量(semaphore)解决司机与售票员问题
  13. 记 flip 简单的动画思路
  14. 电脑可以连接别的手机热点,唯独连接不上某个手机热点怎么办法?
  15. 望京有没有可能成为下一个硅谷?
  16. 对偶式与反函数_函数Y =A(B+C)的对偶式Y’= 和反函数`Y=
  17. final 修饰的成员变量必须手动初始化
  18. 网盘上传工具Boxifier怎么用?
  19. 20230525下载youtube的字幕的方法
  20. 小毛给在一路上帮助过的人的一封感谢信

热门文章

  1. [原创]windows server 2012 AD架构 试验 系列 – 15解决AD复制冲突
  2. 《游戏视频主播手册》——2.2 哪些人适合做游戏主播
  3. 闰秒导致MySQL服务器的CPU sys过高
  4. flex柱状图和折线图的混合图使用
  5. layer ajax 用法,layer加载遮罩层使用 Ajax Loading Demo
  6. VMware vCenter Server6.5安装及群集配置介绍
  7. 分布式事物(同样适用于dubbo事务等分布式事务)
  8. 循序渐进PYTHON3(十三) --8-- DJANGO之ADMIN
  9. [linux]服务器apache配置vhost
  10. Fantasia (Tarjan+树形DP)