【发布时间】:2018-01-08 15:27:37
【问题描述】:
大家好,我正在编写一个算法来从 NodeTree 中删除具体的分支(比如 DSF)。如果您选择节点的名称,算法将检查该节点是否是另一个节点的父节点;如果是,则需要该节点的子节点并添加到堆栈等。希望代码能够呈现这一点。
问题是循环 do/while 被执行了两次,而我认为它应该执行一次。 while 内部发生了 null 条件,因为它被跳过了。
stack.push(keys.head);
// visited.push(flag.data);
while(stack.size>0){
stackTemp=stack.get()
stack.pop();
do{
values=stackTemp.next;
stack.push(values);
stackTemp=values.next;
stack.show();
}while (!stackTemp)
stackTemp=stack.get()
// console.log(stackTemp);
keyTemp=this.map.get(stackTemp.data);
if(keyTemp=undefined)
stack.pop();
}
我还检查了“stackTemp!==”。有任何想法吗?如果有不清楚的地方,对不起,我会尽力解释。 问候!
【问题讨论】:
-
使用
while循环而不是do…while? -
你可以随时使用
return来破解它 -
@Lissy 我会为此使用
break;,因为如果在函数内部,return将退出整个函数而不仅仅是循环 -
我正在做类似的事情,我正在使用break,但我认为由于while内部的条件没有意义,为什么这个条件不起作用,如果stacktemp有null为什么这个循环仍然继续直到出错?
-
while(stackTemp = stackTemp.next) stack.push(stackTemp)..?你肯定想要while(stackTemp),而不是相反。
标签: javascript node.js loops null do-while