Create two pointers, each set to the start of the list. Update each as follows:
while (pointer 1) {
pointerl = pointerl ->next;
pointer2 = pointer2->next; if (pointer2) pointer2=pointer2->next;
if (pointerl == pointer2) {
print (\"circular\n\");
} }
OK, why does this work?
If a list is circular, at some point pointer2 will wrap around and be either at the item just before pointerl, or the item before that. Either way, it's either 1 or 2 jumps until they meet.
while (pointer 1) {
pointerl = pointerl ->next;
pointer2 = pointer2->next; if (pointer2) pointer2=pointer2->next;
if (pointerl == pointer2) {
print (\"circular\n\");
} }
OK, why does this work?
If a list is circular, at some point pointer2 will wrap around and be either at the item just before pointerl, or the item before that. Either way, it's either 1 or 2 jumps until they meet.
0 comments:
Post a Comment