环的入口结点检测
来源:互联网 发布:录制屏幕的软件 编辑:程序博客网 时间:2024/06/04 19:13
在上述“单链表环的检测”文章中提了两种不同写法的快慢指针(思想是一样的),只是快慢指针初始位置有所不同,进而造成快慢指针相遇结点不同。这有什么影响呢?
这回直接影响对“环入口结点检测”,因为环的入口检测与快慢指针相遇结点息息相关。 只有当快慢指针同时出发时,相遇结点对环的入口结点检测有帮助。
一个指向头结点的指针与慢指针(指向相遇结点)同时出发,第一次相遇的结点为环的入口结点。详细的推导请见诚实的偷包贼的博客:http://blog.csdn.net/fanfank/article/details/9140849。
本文使用在上文中创建的带环的单链表:
//环的入口检测pNode CircleStart(pNode head){ pNode fast,slow,temp; fast=slow=temp=head; if(NULL==head->next) { printf("只有一个头结点!");return NULL; } else if(NULL==head->next->next) { printf("只有2个结点!"); return NULL; } else {while((NULL!=fast)&&(NULL!=fast->next)){ slow=slow->next; fast=fast->next->next; if(fast==slow) {break; }} } //一个指向头结点的指针与慢指针(指向相遇结点)同时出发,相遇的结点为环的入口结点 while(1) { temp=temp->next; slow=slow->next; if(slow==temp) { return slow; } }}
运行结果为:
0 0
- 环的入口结点检测
- 求环的入口结点
- 链表的环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- 链表中环的入口结点
- java工作流插件
- 获取ApplicationContext的几种模式
- ThinkInJava中的接口与工厂
- 机器学习笔记——K-means
- Jquery中设置模板绑定数据的方法
- 环的入口结点检测
- 数据库中索引的作用
- java JMenu--
- Oracle Patchset v11203
- Palindrome Partitioning
- IOS 单元测试
- RichEdit控件基础知识之四 分析:
- ajax post get方式提交数据详解
- 设计模式C++实现(8)——代理模式