Detect Loop in linked list
PROBLEM :
Given a linked list, check if the the linked list has a loop. Linked list can contain self loop.
Input:
In this problem, method takes one argument: the head of the linked list. The function should not read any input from stdin/console.
The node structure has a data part which stores the data and a next pointer which points to the next element of the linked list.
There are multiple test cases. For each test case, this method will be called individually.
Output:
Return 1 if linked list has a loop else 0.
Constraints:
1<=T<=50
1<=N<=300
--------------------------------------------------------------------------------
SIMPLE c++ IMPLEMENTATION :
--------------------------------------------------------------------------------
/*
Detect a cycle in a linked list. Note that the head pointer may be 'NULL' if the list is empty.
A Node is defined as:
struct Node {
int data;
struct Node* next;
}
*/
bool has_cycle(struct Node* head) {
struct Node *one,*two ;
if(head==NULL||head->next==NULL)
return 0 ;
one=head ;
two=head ;
while((one!=NULL)&&(two!=NULL)&&(two->next!=NULL))
{
one=one->next ;
two=two->next->next ;
if(one==two)
{
return 1 ;
}
}
return 0 ;
}
---------------------------------------------------------------------------------
Given a linked list, check if the the linked list has a loop. Linked list can contain self loop.
Input:
In this problem, method takes one argument: the head of the linked list. The function should not read any input from stdin/console.
The node structure has a data part which stores the data and a next pointer which points to the next element of the linked list.
There are multiple test cases. For each test case, this method will be called individually.
Output:
Return 1 if linked list has a loop else 0.
Constraints:
1<=T<=50
1<=N<=300
--------------------------------------------------------------------------------
SIMPLE c++ IMPLEMENTATION :
--------------------------------------------------------------------------------
/*
Detect a cycle in a linked list. Note that the head pointer may be 'NULL' if the list is empty.
A Node is defined as:
struct Node {
int data;
struct Node* next;
}
*/
bool has_cycle(struct Node* head) {
struct Node *one,*two ;
if(head==NULL||head->next==NULL)
return 0 ;
one=head ;
two=head ;
while((one!=NULL)&&(two!=NULL)&&(two->next!=NULL))
{
one=one->next ;
two=two->next->next ;
if(one==two)
{
return 1 ;
}
}
return 0 ;
}
---------------------------------------------------------------------------------
Comments
Post a Comment