在链表里如何发现循环链接?
2012-08-01 20:54
323 查看
链表有循环链接
其实就是发现链表里面有环
<-------------------
->p0->p1->p2->
设置两个指针s0 ,s1
s0每次移动一步,s1每次移动两步,如果有环的则总会在链表的某一个节点相遇。否则就是没有循环链接。
typedef struct LinkNode
{
int data;
LinkNode *next;
}node;
void findx(node *head)
{
node *s0,*s1;
s0 = head;
s1=head;
while((s0 != NULL) &&(s1 != NULL))
{
s0 = s0->next;
s1 = s1->next->next;
if(s0 == s1)
{
printf("有循环链接");
}
}
if((s1 == NULL) || (s0 == NULL))
{
printf("没有循环链接");
}
}
其实就是发现链表里面有环
<-------------------
->p0->p1->p2->
设置两个指针s0 ,s1
s0每次移动一步,s1每次移动两步,如果有环的则总会在链表的某一个节点相遇。否则就是没有循环链接。
typedef struct LinkNode
{
int data;
LinkNode *next;
}node;
void findx(node *head)
{
node *s0,*s1;
s0 = head;
s1=head;
while((s0 != NULL) &&(s1 != NULL))
{
s0 = s0->next;
s1 = s1->next->next;
if(s0 == s1)
{
printf("有循环链接");
}
}
if((s1 == NULL) || (s0 == NULL))
{
printf("没有循环链接");
}
}
相关文章推荐
- 在链表里如何发现循环链接
- 如何用C++递归的方法来将循环链表的unique data找出来
- 如何发现链表有环
- HashMap死循环及JDK1.8的resize()如何维护链表顺序
- 线性表链接实现--双循环链表
- 如何将一片内存链接成链表
- 如何用C++来实现在循环链表里展示除了最后一个节点,然后返回所展示的节点总和
- 如何创建不带头节点的双向循环链表
- 如何将一个排序二叉树转换为循环双向链表
- 今天在对微信公众帐号时,发现不知道如何在回复的文本信息里加上链接呢,有哪个高人知道的呢?
- 链表的循环链接
- 线性表链接实现--双循环链表
- 如何用C++实现双向循环链表
- 如何判断一个单向链表是否存在循环的经典方法
- 如何检测DG中是否有循环链接?
- HashMap死循环及JDK1.8的resize()如何维护链表顺序
- uva133 利用指针编写双向循环链表
- 关于网站内连的重要性和如何做内部链接?
- 如何提高网站关键字排名-反向链接
- 单循环链表的初始化、插入、删除、遍历、查找