this nonrecursive traversal uses a stack s2

create(l)

/* Inputs records and creates the list l */

liststructurepointer l;

{

liststructurepointer ptr,null,setnull(),

next(),sublist();

stack s2;

null = setnull();

ptr = l;

setstack(&s2);

while ((ptr != null)||(!empty(&s2)))

if (ptr != null)

{

createrecord(l,ptr);

if (complex(ptr))

{

push(next(ptr),&s2);

ptr = sublist(ptr);

}

else

ptr = next(ptr);

}

else

pop(&s2,&ptr);

}