单链表判断环-快慢指针
具体代码
#include<stdio.h>
#include <stdlib.h>
#include<malloc.h>
#define MAXSIZE 100
typedef struct Node{
int date;
struct Node* next;
}Node;
typedef struct Node* LinkList;
void List_Init(LinkList *L,int n){
LinkList head,p;
*L=(LinkList)malloc(sizeof(Node));
head=*L;
for(int i=0;i<n;i++){
p=(LinkList)malloc(sizeof(Node));
p->date=i+1;
head->next=p;
head=p;
}
p->next=(*L)->next;
}
void function(LinkList L){
LinkList slow,quick;
slow=L->next;
quick=slow;
do{
slow=slow->next;
quick=quick->next->next;
if(slow==quick){
printf("存在");
return;
}
}while(quick&&slow);
printf("无环");
}
void List_Print(LinkList *L){
LinkList p;
p=(*L)->next;
do{
printf("%d ",p->date);
p=p->next;
}while(p!=(*L)->next);
printf("\n");
}
int main(){
LinkList L;
List_Init(&L,20);
function(L);
}