如果单链表中有环,那么找出入环的第一个节点
来源:互联网 发布:magnet关联的软件 编辑:程序博客网 时间:2024/06/09 15:03
如果单链表有环,找出入环的第一个节点,
如果单链表有环,那么就应该存在两个指针,能够在环上存在两个指针相同。
p1 == p2
这样就在p1处断开这个环,相当于一个Y型的相交环了,一个单链表头结点为head ,另一个单链表头结点为p1 ,这样就从head ,p1出发,直到找出第一个相等的节点就是入环的第一个节点了
// 首先要找到是否有环,并找到在换上相同的那个节点,并返回节点
node *is_findx_circle(node *head)
{
node *p1,*p2,*p;
p1 = head->next;
p2=head->next->next;
while(p1 !=NULL && p2!= NULL)
{
if( p1==p2 )
{
p = p1;
}
p1 = p1->next;
p2=p2->next->next;
}
return p;
}
// 找出点链表中第一个相交的点
node *find_frist(node *head1 ,node *head2)
{
int len1 ,len2,i ;
node *p1,*p2;
p1 = p1->next;
p2 = p2->next;
len1 = length(head1);
len2 = length(head2);
if(len1 > len2)
{
for(i = 0 ; i <len1-len2 ; i++)
{
p1 = p1->next;
}
}
if(len2>len1)
{
for( i =0;i<len2-len1 ; i++)
{
p2 = p2->next;
}
}
while( (p1 != NULL) && (p2 != NULL) )
{
if(p1==p2)
{
return p1;
break;
}
else
{
p1 = p1->next;
p2 = p2->next;
}
}
}
- 如果单链表中有环,那么找出入环的第一个节点
- 判断链表是否有环,如果有返回入环的第一个节点。
- 找出单链表的第一个公共节点
- 判断链表有环并返回入环的第一个节点
- 找出两个链表的第一个公共节点
- 找出两个链表的第一个公共节点
- 找出二叉树中某两个节点的第一个公共祖先
- Java找出两个链表的第一个公共节点
- 找出两个链表的第一个公共节点
- 判断单链表是否有环 并找出第一个相交的节点
- 判断单链表是否有环 并找出第一个相交的节点
- 给定单链表,检测是否有环。如果有环,则求出进入环的第一个节点
- 给定单链表(head),如果有环的话请返回从头结点进入环的第一个节点
- 【BST】找出有重复值的BST中值为key的第一个节点
- 程序员面试题精选——找出两个链表的第一个公共节点
- 两个链表相交,要求找出第一个相交的节点
- 输入两个链表,找出它们的第一个公共节点(值)
- 面试题04:找出两个单向链表的第一个公共节点
- C++指针
- Tomcat Introduction
- Xen api 的层次结构
- 水题 Border
- 抽象外观类的单例化分析与改造
- 如果单链表中有环,那么找出入环的第一个节点
- 什么情况该继承
- C语言,锯齿数组
- Python_Notepad++搭建Python开发环境的一个小改进
- UIScrollview 内存释放问题
- 制作可保存配置的U盘版BT4(BackTrack4 )
- Hadoop2.0 Mapreduce实例WordCount体验
- <JQurey>复选框,选中行换色及鼠标滑过换色
- iphone 游戏开发 失败经验 总结