-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlength_of_loop.cpp
More file actions
84 lines (49 loc) · 1.15 KB
/
Copy pathlength_of_loop.cpp
File metadata and controls
84 lines (49 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include "essentials.cpp"
int node_count(struct node*node1){
struct node*temp=node1;
int count=1;
while(temp->next!=node1){
count++;
temp=temp->next;
}
return count;
}
int detect_loop(struct node**head){
if(*head==NULL){
return -1;
}
else{
struct node*slow=*head;
struct node*fast=*head;
while(slow && fast && fast->next){
slow=slow->next;
fast=fast->next->next;
if(slow==fast){
cout<<"found loop"<<endl;
// struct node*temp=*head;
// while(slow->next!=temp){
// }
}
}
cout<<"no loop"<<endl;
}
}
int main(){
struct node*head=NULL;
head=push_atend(head,1);
head=push_atend(head,11);
head=push_atend(head,21);
head=push_atend(head,41);
head=push_atend(head,2);
head=push_atend(head,3);
// head=push_atend(head,31);
// head=push_atend(head,32);
// head=push_atend(head,33);
head=push_atend(head,4);
head=push_atend(head,5);
// int count=node_count(head);
// cout<<count;
head->next->next->next->next->next->next->next->next = head->next;
cout<<detect_loop(&head);
return 1;
}