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() { printf("%d", out); } int out=100;
write the function. if all the character in string B appear in string A, return true, otherwise return false.
print numbers till we want without using loops or condition statements like specifically(for,do while, while swiches, if etc)!
Write a program that find and print how many odd numbers in a binary tree
void main() { char ch; for(ch=0;ch<=127;ch++) printf(“%c %d \n“, ch, ch); }
Given an array of size N in which every number is between 1 and N, determine if there are any duplicates in it. You are allowed to destroy the array if you like.
21 Answers ABC, eBay, Goldman Sachs, Google, HUP, Microsoft, TATA,
main() { signed int bit=512, mBit; { mBit = ~bit; bit = bit & ~bit ; printf("%d %d", bit, mBit); } } a. 0, 0 b. 0, 513 c. 512, 0 d. 0, -513
3 Answers HCL, Logical Computers,
what is oop?
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.
main() { struct date; struct student { char name[30]; struct date dob; }stud; struct date { int day,month,year; }; scanf("%s%d%d%d", stud.rollno, &student.dob.day, &student.dob.month, &student.dob.year); }
WAP to display 1,2,3,4,5........N
how can u draw a rectangle in C
53 Answers Accenture, CO, Codeblocks, Cognizant, HCL, Oracle, Punjab National Bank, SAP Labs, TCS, University, Wipro,