如何判断链表有环
来源:互联网 发布:软件的编程语言 编辑:程序博客网 时间:2024/06/11 18:41
假设存在环, 环前共L个节点, 环中共C个节点.
设一个慢指针起始位置为a, 速度为1, 快指针起始位置为b, 速度为2.
t时间后, 二者相遇, 可列方程:
(a+t-L)mod C == (b+2*t-L)mod C
即t=a-b(mod C), 该模线性方程必定有解.
所以无论a, b的起始位置如何, 二者总是会相遇的.
Struct Node
{
int data;
Node* Next;
};
void check_chain_circle(Node* temp)
{
Node* head1=temp;
Node* head2=temp;
while(head1->next!=head2->next->next)
{
head1=head1->next;
head2=head2->next->next;
if(head1==NULL||head2==NULL)
{
printf("No circle!/n");
return;
}
}
printf("Yes, the chain has circle!/n");
return;
}
2011-04-27 16:04:29
- 如何判断单向链表有环?
- 如何判断单向链表有环?
- 如何判断链表有环
- 如何判断链表有环
- 如何判断链表有环
- 算法-如何判断链表有环
- 如何判断一个链表有环?
- 如何判断一个链表有环?
- 【算法】如何判断链表有环
- 编程之美:链表有环,如何判断相交
- java工程师面试题:如何判断链表有环?
- 如何判断网卡损坏
- 如何判断主键重复
- 如何判断一个数时幂数?
- 如何判断文本文件编码
- 如何判断文本文件编码
- 如何判断AudioFormat
- 如何判断闰年1
- c学习的基本问题-4:关于struct,union,enum
- org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
- 对MVC模式的理解
- Jquery CheckBox
- Process and Thread Functions (进程和线程相关API函数)
- 如何判断链表有环
- Oracle左连接,右连接
- 从DOORS数据库备份恢复某一个模块
- IntrospectorCleanupListener 简介
- 表驱动
- C++0x 右值引用
- djangouser.is_authenticated
- Linux环境下轻松搭建CVS服务器
- 检查数据库对象是否存在