1
void preorder(tree *node)
{
do
{
while(node != NULL)
{
printf("%d ", node -> data) ;
if(node -> right != NULL)
top = push(top , node -> right) ;
node = node -> left ;
}
if(top != NULL)
{
node = top -> ptr ;
top = pop(top) ;
}
}while(top != NULL || node != NULL) ;
}
在上面的代码块中,inner while循环中的终止条件是外部do-while循环的子部分。那么,当内部while循环终止时,外部循环是否会同时终止?内循环的终止条件与外循环相同
'node'和'top'都可以在内部循环后重新分配,所以仅仅因为内部循环退出并不意味着外部循环也会自动。 –
不完全。如果内部循环条件停止,将在再次检查外部'do while'之前检查'if'。如果'if'中的'node'被更改为非'NULL'值,则外部'while'将继续。 – duncan
那么,如果'顶部== NULL'循环永远循环... – LPs