单链表中查找环的开始节点
来源:互联网 发布:电子游标卡尺数据导出 编辑:程序博客网 时间:2024/06/05 18:28
已知壹个链表,尾节点错误的指向了本身,形成了带一段单链表的环链表;头结点已知,链表长度未知,求节点环的开始节点
/* (Step 1) Find the meeting point. This algorithm moves two pointers at
* different speeds: one moves forward by 1 node, the other by 2. They
* will always pass the slower one!). If the loop starts k nodes after the
* start of the list, they will meet at k nodes from the start of the
* loop. */
n1 = n2 = head;
while (TRUE) {
n1 = n1->next;
n2 = n2->next->next;
if (n1 == n2) {
break;
}
}
/* Find the start of the loop.*/
n1 = head;
while (n1->next != n2->next) {
n1 = n1->next;
n2 = n2->next;
}
/*Now n2 points to the start of the loop.*/
关于查找环链表的开始节点:
假设单链表长度为L,环形链表长度为K,由于设置了快慢指针,快慢指针一定会在环形链表的某一点相遇,假设该节点距离环形链表开始距离为a.那么可以得到这样的一个结论:慢指针走的距离=L+a,快指针的走的距离=L+a+k*n,此时,让慢指针从头再走,走L的时间正好是快指针走完剩下的路程k-a+(n-1)*k。
- 单链表中查找环的开始节点
- 单链表节点的查找
- 二叉查找树,删除,节点开始查找数字
- 可双向并指定开始结点的treeview节点遍历查找方法类
- 查找和节点相连接的节点
- DOM 查找节点,修改节点的值
- XML查找节点的方法
- CTreeCtrl控件的查找节点
- 查找单链表的中间节点
- 查找单链表的中间节点
- 查找深层次的子节点
- sql 查找节点下的所有子节点,查找节点的所有父节点
- 查找节点
- 查找某节点的父节点的父节点的父节点下的a元素
- 查找指定节点的所有父子节点的示例函数
- 创建XML--从小的节点开始
- Activiti 开始节点添加用户名的方法
- 二叉排序树,完成创建节点,插入节点,删除节点,查找节点,中序遍历的功能
- 我在南大的七年【南京大学的7年】
- 数据加密
- 河北日报《再造学生“学习生命力”》
- RBAC权限管理
- Android学习札记23:LruCache
- 单链表中查找环的开始节点
- 解读BOLT引擎例子——HelloBolt2
- Linux 指定动态库搜索路径
- 写的一个SQL的piovt的小例子
- mailx发送邮件
- bss,data,text,rodata,堆,栈,常量段
- JDK提供的转码工具native2ascii.exe的使用
- win7桌面图标如何放小
- android 各个版本的源代码下载地址