Question on tree-walking and mutually-recursive types
Zack Weinberg
zack@codesourcery.com
Tue Jun 29 03:48:00 GMT 2004
kenner@vlsi1.ultra.nyu.edu (Richard Kenner) writes:
> How about the usual two-pointers collapsing loop algorithm to detect
> the cycle?
>
> Sorry, I don't recognize this reference (and neither does Google).
Like this:
struct S { struct S *next; };
bool
detect_cycle(struct S *list)
{
struct S *p, *q;
bool advance_q = false;
if (list == 0)
return false;
q = list;
p = list->next;
do
{
if (q == p)
return true;
if (advance_q)
q = q->next;
p = p->next;
advance_q = !advance_q;
}
while (p);
return false;
}
zw
More information about the Gcc
mailing list