首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跳过do/while循环

跳过do/while循环
EN

Stack Overflow用户
提问于 2018-01-08 23:27:38
回答 1查看 102关注 0票数 0

嘿,伙计们,我正在写一个算法来从NodeTree中删除具体的分支(比如DSF)。如果选择节点名称,算法将检查此节点是否为另一个节点的父节点;如果是,则获取此节点的子节点,并将其添加到堆栈中,依此类推。希望代码能够呈现这一点。

问题是循环do/while被执行了两次,而我认为它应该执行一次。while内部的null条件发生了一些事情,因为它被跳过了。

代码语言:javascript
复制
  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!==“。有什么想法吗?如果有什么不清楚的地方,对不起,我会尽量解释的。致以问候!

EN

回答 1

Stack Overflow用户

发布于 2018-01-09 00:22:19

看起来这些评论不足以让你挡道,然后我会添加一些解释,并添加我自己的解释:

_Bergi建议您使用while的另一种语法是有原因的:无论条件如何,do{ /*code*/ }while(condition)都会至少执行一次代码。您可能希望使用while(condition){ /*code*/ },因为使用此语法时,如果条件失败,则不会进入循环,并且条件是“如果var值存在”,如果条件失败,则不想进入循环。

_Amongst是我不会解释的另一件事(因为我想尽可能地保持清晰,这是一个更高级的特性),Jonas W.评论说你的情况是错误的。意思是“只要”。您的代码告诉您“只要stackTemp为false (或为空、未定义等),就留在循环中”。你可能想要相反的结果。

_Finally中,将stackTemp.next存储在values中以将其放入数组中是没有用的。如果它是一个对象(或函数),则不会复制它的值,因为JS通过引用传递它们。您可以只将stackTemp.next存储在数组中,它将是相同的,因为stackTemp在被替换之后,其引用被更改,并且存储在数组中的stackTemp.next不会受到影响。

这就是结果,如果它仍然不起作用,那是其他原因造成的:

代码语言:javascript
复制
stack.push(keys.head);
// visited.push(flag.data);
while(stack.size>0){
    stackTemp=stack.get()

    stack.pop();
    while (stackTemp){ //not supposed to enter here is stackTemp is empty
      stack.push(stackTemp.next);
      stackTemp=stackTemp.next; //stackTemp reference is replaced
      stack.show();
    }
    stackTemp=stack.get()
    // console.log(stackTemp);
    keyTemp=this.map.get(stackTemp.data);
    if(keyTemp=undefined)
    stack.pop();

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48153280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档