How will u find whether a linked list has a loop or not?
Answers were Sorted based on User's Feedback
Answer / sivaraj
BOOL findloop(struct node *start)
{
struct node *ptr,*ptr1;
ptr=start;
ptr1= start->next;
while(ptr!=NULL && ptr->next!=null && ptr1->next!=null &&
ptr1->next->next!=null)
{
if(ptr==ptr1)
return FALSE;
ptr=ptr->next;
ptr1=ptr1->next->next;
}
return TRUE;
}
| Is This Answer Correct ? | 16 Yes | 5 No |
Answer / sanyam
the approach is to mark the nodes starting from the head.and
follow the links.
in the process if you find a node already marked then there
is loop.
| Is This Answer Correct ? | 13 Yes | 2 No |
Answer / priya
same logic as 3rd answer..
typedef struct node
{ int data,mark; /*mark is all initialised to 0*/
node *next;
}node;
node* findloop(node* start)
{
node *p=start;
while(p)
{
if(p->mark==0)
{
p->mark=1;
p=p->next;
}
else
{
return p;
}
}
return p;
}
| Is This Answer Correct ? | 3 Yes | 3 No |
Answer / karthik
I guess the return shud b TRUE in the if(ptr==ptr1) block
since that's the oly condition for presence of a loop in the
LL.. and return shud b a false after d while loop!!!
| Is This Answer Correct ? | 0 Yes | 0 No |
Answer / zameer arif
You are right. In the loop, return should be true. outside
the loop, false.
| Is This Answer Correct ? | 0 Yes | 0 No |
Answer / anurag srivastava
void lopp( node **start)
{
node *temp,*newnode;
temp=*start;
while(*temp && !(temp->next==start))
{ temp=temp->next; }
if(!(*temp)) printf("Non loop");
else printf("Loop");
}
| Is This Answer Correct ? | 3 Yes | 5 No |
Answer / s.v.prasad reddy
findloop(struct node *start)
{
struct node *ptr,*ptr1;
start=ptr;
while(ptr!=NULL)
{
ptr1=ptr->next;
while(ptr1!=NULL)
{
if(ptr1->link==ptr->link)
{
printf("\nLoop found at %d node",ptr->data);
exit(0);
}
ptr1=ptr1->link;
}
ptr=ptr->link;
}
printf("\nNo Loop found in list");
}
| Is This Answer Correct ? | 9 Yes | 17 No |
main() { int i; i = abc(); printf("%d",i); } abc() { _AX = 1000; }
how to create a 3x3 two dimensional array that will give you the sums on the left and bottom columns
How will u find whether a linked list has a loop or not?
main() { char c; int i = 456; clrscr(); c = i; printf("%d", c); } a. 456 b. -456 c. random number d. none of the above
main() { int i=4,j=7; j = j || i++ && printf("YOU CAN"); printf("%d %d", i, j); }
main() { extern i; printf("%d\n",i); { int i=20; printf("%d\n",i); } }
main() { char *p = “ayqm”; printf(“%c”,++*(p++)); }
29 Answers IBM, TCS, UGC NET, Wipro,
Predict the Output: int main() { int *p=(int *)2000; scanf("%d",2000); printf("%d",*p); return 0; } if input is 20 ,what will be print
write a program to find out roots of quadratic equation "x=-b+-(b^2-4ac0^-1/2/2a"
main() { int c=- -2; printf("c=%d",c); }
main( ) { void *vp; char ch = ‘g’, *cp = “goofy”; int j = 20; vp = &ch; printf(“%c”, *(char *)vp); vp = &j; printf(“%d”,*(int *)vp); vp = cp; printf(“%s”,(char *)vp + 3); }
4. Main() { Int i=3,j=2,c=0,m; m=i&&j||c&I; printf(“%d%d%d%d”,I,j,c,m); }