判断一个单链表中是否存在环
#判断一个单链表中是否存在 环。
#设置两个指针(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;
}
判断一个单链表中是否存在环相关推荐
- 单链表——判断一个单链表中是否有环
2019独角兽企业重金招聘Python工程师标准>>> package jxau.lyx.link;/*** * @author: liyixiang* @data:2014-10- ...
- 判断一个单链表中是否有环
思路:快慢指针实现 用两个指针,一个指针一次走一步,另一个指针一次走两步,如果存在环,则这两个指针会在环内相遇,时间复杂度为O(n) /*** 检测单链表中是否有环*/public static bo ...
- 【数据结构】判断一个单链表中各结点的值是否有序
count记录的是单链表的总长 count1记录的是升序的结点的个数 count2记录的是降序的结点的个数 如果count1或者count2等于count,那么就说明该序列是升序或者降序的. 稍加改进 ...
- 判断单链表中的元素是否递增_检测单链表中是否有环(C语言)
检测单链表中是否有环(C语言) 方法:双指针法思路 使用两个指针,两个初始时都指向链表的头结点,然后one指针一次加一,另一个two指针一次加二. 在链表有环时,two指针与one指针相等就说明有环. ...
- 用python 判断一个单链表是否有环
文章目录 用python 判断一个单链表是否有环. 第二次做DAY20201130 [141. 环形链表](https://leetcode-cn.com/problems/linked-list-c ...
- 判断一个单链表是否有环,若有,找出环的入口节点
题目:如何判断一个单链表是否有环?若有环,如何找出环的入口节点. 一.单链表是否有环 思路分析: 单链表有环,是指单链表中某个节点的next指针域指向的是链表中在它之前的某一个节点,这样在链表的尾部形 ...
- 数据结构和算法设计专题之---判断单链表中是否有环,环的长度,环的入口节点...
题目: 给定一个单链表,只给出头指针head: 1.如何判断是否存在环? 2.如何知道环的长度? 3.如何找出环的连接点在哪里? 4.带环链表的长度是多少? 解法: 1.对于问题1,使用追赶的方法 ...
- c语言 判断链表之中是否有环,判断单链表中是否存在环(网上说的笔试题)
2015-10-06 06:30:02 阅读( 83 ) #include "stdafx.h" typedef char eleType; // 定义链表中的数据类型 ty ...
- 如何判断一个单链表是否有环?
快慢指针查询,快指针每次跳两个,慢指针每次跳一个,如果两指针相等时,就证明有环 环的入口: 用两个指针,一个指向快慢指针相交点(这里就是慢指针走,慢指针在走快指针的一半就相当于快指针走的路了,还会到这 ...
最新文章
- 亚洲与非洲:中国支付巨头的海外进击
- 2015服务器性能排名,【新年大礼】史上最全CPU天梯图2015年V3.5版 全平台性能对比参考...
- 网络技术术语英汉对照
- 【渝粤题库】陕西师范大学180208 产品管理 作业(专升本)
- 利用指针编程实现:删除一个字符串中的所有空格 c语言,C语言必考100题解析汇报...
- 分割函数python_python strip() 函数和 split() 函数的详解及实例
- MySQL 四种链接
- Matlab for Mac 中文路径乱码解决
- 在Ubuntu系统中重置root密码
- Kotlin-Android-Extensions:不仅仅是替代findViewById
- 计算机ps特效教程,制作木质电脑桌的PS滤镜教程
- 信号量(semaphore)解决司机与售票员问题
- 记 flip 简单的动画思路
- 电脑可以连接别的手机热点,唯独连接不上某个手机热点怎么办法?
- 望京有没有可能成为下一个硅谷?
- 对偶式与反函数_函数Y =A(B+C)的对偶式Y’= 和反函数`Y=
- final 修饰的成员变量必须手动初始化
- 网盘上传工具Boxifier怎么用?
- 20230525下载youtube的字幕的方法
- 小毛给在一路上帮助过的人的一封感谢信
热门文章
- [原创]windows server 2012 AD架构 试验 系列 – 15解决AD复制冲突
- 《游戏视频主播手册》——2.2 哪些人适合做游戏主播
- 闰秒导致MySQL服务器的CPU sys过高
- flex柱状图和折线图的混合图使用
- layer ajax 用法,layer加载遮罩层使用 Ajax Loading Demo
- VMware vCenter Server6.5安装及群集配置介绍
- 分布式事物(同样适用于dubbo事务等分布式事务)
- 循序渐进PYTHON3(十三) --8-- DJANGO之ADMIN
- [linux]服务器apache配置vhost
- Fantasia (Tarjan+树形DP)