判断一个单链表是否有环及环的链接点
来源:互联网 发布:小数据研究所 编辑:程序博客网 时间:2024/05/16 11:06
一种方法是设置两个指针指向单链表的head, 然后开始遍历,第一个指针走一步,第二个指针走两步,如果没有环,它们会直接走到底,如果有环,这两个指针一定会相遇。该方法的实现代码如下,程序中找出了环的起始位置:
node* first_loop_port(node *head)
{
node *slow = head, *fast = head;
while ( fast && fast->next )
{
slow = slow->next;
fast = fast->next->next;
if ( slow == fast ) break;
}
if (fast == NULL || fast->next == NULL)
return NULL;
slow = head;
while (slow != fast)
{
slow = slow->next;
fast = fast->next;
}
return slow;
}
证明:
假设单链表的总长度为L,头结点到环入口的距离为a,环入口到快慢指针相遇的结点距离为x,环的长度为r,慢指针总共走了s步,则快指针走了2s步。另外,快指针要追上慢指针的话快指针至少要在环里面转了一圈多(假设转了n圈加x的距离),得到以下关系:
附图:
- 判断单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点(转)
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点(转)
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点(转)
- 判断一个单链表是否有环及环的链接点(转)
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点
- 判断一个单链表是否有环及环的链接点(转)
- cocos2d-x 3.0 跨平台游戏开发(官方售价550元)
- Delphi调用MSSQL存储过程返回的多个数据集的方法
- 在公司上班所做的一些笔记
- 射频卡(mifare)防冲突机制详解
- HDFS HA
- 判断一个单链表是否有环及环的链接点
- POJ2503-Babelfish
- 暑期个人赛--第二场--A
- Access restriction: The type * is not accessible due to restrict,报错问题
- 第29条:优先考虑类型安全的异构容器
- KMP算法详解
- Java语法基础,零基础学编程从这里开始
- Oracle 用户设置密码为永不过期
- YARN(Hadoop)学习笔记(2)