how to check whether a linked list is circular.
Answers were Sorted based on User's Feedback
Answer / coder_1
Create two pointers, each set to the start of the list.
Update each as follows:
while (pointer1) {
pointer1 = pointer1->next;
pointer2 = pointer2->next; if (pointer2)
pointer2=pointer2->next;
if (pointer1 == pointer2) {
print (\"circular\n\");
}
}
If a list is circular, at some point pointer2 will wrap
around and be either at the item just before pointer1, or
the item before that. Either way, it?s either 1 or 2 jumps
until they meet.
| Is This Answer Correct ? | 86 Yes | 34 No |
Answer / pratyu
node *ptr1,*ptr2;
ptr1=head;
ptr2=head->next;
while(ptr2)
{
if(ptr1==ptr2)
printf("circular linked list");
ptr2=ptr2->next;
}
printf("not a circular linked list");
| Is This Answer Correct ? | 31 Yes | 7 No |
Answer / priya
This is the function to check if the linklist is circular:
bool CLinklist::ifcircular()
{
node *ptr1,*ptr2;
ptr1 = front;
ptr2 = front;
while(ptr1)
{
ptr1 = ptr1->link;
ptr2 = ptr2->link;
if(ptr2)
ptr2 = ptr2->link;
if(ptr1 == ptr2)
return 1;
}
}
| Is This Answer Correct ? | 15 Yes | 7 No |
consider home pointer as the starting pointer of the linked
list.
consider temp as the temporary pointer.
temp = home;
while(temp != NULL)
{
if(temp -> next == start)
{
flag = 1;
break;
}
else
flag = 0;
temp = temp -> next;
}
if(flag == 1)
printf("Circular");
else
printf("Not circular");
| Is This Answer Correct ? | 30 Yes | 30 No |
Answer / nirwal
hi All
specialy the two pointer solution techies
what about the loop in the link list ?
how you differentiate b/w circular list and list having the
loop?
Think again...........
| Is This Answer Correct ? | 4 Yes | 4 No |
Answer / abhi
while(q->next->next=NULL)
{
p=p->next;
q=q->next->next;
if(p==q)
{
printf("loof is find");
break;
}
}
| Is This Answer Correct ? | 2 Yes | 2 No |
Answer / shahid khan abbasi
bool hasCircle(List l)
{
Iterator i = l.begin(), j = l.begin();
while (true) {
// increment the iterators, if either is at the end,
you're done, no circle
if (i.hasNext()) i = i.next(); else return false;
// second iterator is travelling twice as fast as first
if (j.hasNext()) j = j.next(); else return false;
if (j.hasNext()) j = j.next(); else return false;
// this should be whatever test shows that the two
// iterators are pointing at the same place
if (i.getObject() == j.getObject()) {
return true;
}
}
}
| Is This Answer Correct ? | 2 Yes | 3 No |
Answer / burmeselady
start from pointer1
check all node's next pointer is null or not starting from
pointer1 until pointer1
if a node next pointer is null=> it is not circular.
else it is circular
| Is This Answer Correct ? | 5 Yes | 7 No |
Answer / ishan
by checking whether link field in the last node contains
the address of the first node.
| Is This Answer Correct ? | 17 Yes | 20 No |
Answer / lohitha
node *ptr1,*ptr2;
ptr1=head;
ptr2=head->next;
while(ptr2)
{
if(ptr1==ptr2)
{
printf("circular linked list");
break;
}
ptr2=ptr2->next;
}
printf("not a circular linked list");
| Is This Answer Correct ? | 3 Yes | 6 No |
main(int argc, char *argv[]) { (main && argc) ? main(argc-1, NULL) : return 0; } a. Runtime error. b. Compile error. Illegal syntax c. Gets into Infinite loop d. None of the above
main() { char *a = "Hello "; char *b = "World"; clrscr(); printf("%s", strcat(a,b)); } a. Hello b. Hello World c. HelloWorld d. None of the above
int swap(int *a,int *b) { *a=*a+*b;*b=*a-*b;*a=*a-*b; } main() { int x=10,y=20; swap(&x,&y); printf("x= %d y = %d\n",x,y); }
Is the following code legal? struct a { int x; struct a b; }
print numbers till we want without using loops or condition statements like specifically(for,do while, while swiches, if etc)!
Given an array of characters which form a sentence of words, give an efficient algorithm to reverse the order of the words (not characters) in it.
void main() { int *i = 0x400; // i points to the address 400 *i = 0; // set the value of memory location pointed by i; }
main() { char *a = "Hello "; char *b = "World"; clrscr(); printf("%s", strcpy(a,b)); } a. “Hello” b. “Hello World” c. “HelloWorld” d. None of the above
4 Answers Corporate Society, HCL,
main() { int i=5,j=6,z; printf("%d",i+++j); }
How we will connect multiple client ? (without using fork,thread)
Write a program that reads a dynamic array of 40 integers and displays only even integers
#include<stdio.h> main() { struct xx { int x; struct yy { char s; struct xx *p; }; struct yy *q; }; }