您的位置:首页 > 其它

检查单链表中是否有环的存在

2018-01-30 10:05 162 查看
检查单链表中是否有环的存在,可以用两个指针来遍历,fast指针和slow指针,fast指针每次走两步,slow指针每次走一步,

若单链表中有环,则在遍历了很多遍后两指针终会相遇,若单链表中没有环,则fast指针先到达链表的末尾。#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
char a;
struct Node *next;
}Node,*LinkList;
void create(LinkList L)
{

LinkList p,s;
p=(LinkList)malloc(sizeof(Node));
L->next=p;
//p->next=L->next;
int i=0;
while(i<15)
{
s=(LinkList)malloc(sizeof(Node));
//s->next=L->next;
p->next=s;
p=s;
i++;
}
s->next=L->next->next;

}
void Loop(LinkList L)
{
LinkList fast,slow;
fast=slow=L->next;
while(fast!=NULL&&fast->next!=NULL)
{
fast=fast->next->next;
slow=slow->next;
if(fast==slow)
break;
}
if(fast==slow)
{
printf("这个链表里面有环\n");
}
else
{
printf("此单链表没有环存在\n");
}
}
int main()
{

Node L;
create(&L);
Loop(&L);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  小应用