[quote="SVK"][/quote]
Вы руками что ли эту трассировку писали? Как это вы из внутреннего цикла вдруг во внешний выскочили?
Ладно, не можете сами написать, попробуйте откомпилировать мою:
Code: Select all
#include <stdio.h>
typedef struct Node Node;
struct Node {
Node *next;
Node *child;
Node *parent;
int key;
};
Node nd2, nd3, nd4, nd5, nd6, nd7, nd8, nd9, nd10, nd11, nd12, nd13;
Node nd1 = { NULL, &nd2, NULL, 1 };
Node nd2 = { &nd6, &nd3, &nd1, 2 };
Node nd3 = { &nd7, &nd4, &nd2, 3 };
Node nd4 = { &nd8, &nd5, &nd3, 4 };
Node nd5 = { NULL, NULL, &nd4, 5 };
Node nd6 = { &nd9, NULL, &nd1, 6 };
Node nd7 = { NULL, NULL, &nd2, 7 };
Node nd8 = { &nd10, NULL, &nd3, 8 };
Node nd9 = { NULL, NULL, &nd1, 9 };
Node nd10 = { NULL, &nd11, &nd3, 10 };
Node nd11 = { &nd13, &nd12, &nd10, 11 };
Node nd12 = { NULL, NULL, &nd11, 12 };
Node nd13 = { NULL, NULL, &nd10, 13 };
Node *root = &nd1;
void
process( Node *nd )
{
printf("%d\n", nd->key );
}
int
main()
{
Node *cur=root;
while ( cur ) {
process( cur );
if ( cur->child ) {
cur = cur->child;
continue;
}
while ( cur ) {
if ( cur->next ) {
cur = cur->next;
break;
}
cur = cur->parent;
}
}
return 0;
}
Сообщите о результатах.