首页 > 解决方案 > 如果不满足循环条件,如何执行一段代码?

问题描述

假设我有一棵树,我想继续从当前节点向左走。如果当前节点没有左边,我想继续往右走。否则返回。要做这样的事情,我必须写这样的东西:

if (node->left != nullptr)
    while (node->left != nullptr)
        node = node->left;
else if (node->right != nullptr)
    while (node->right != nullptr)
        node = node->right;
else return;

正如你所看到的,我不得不写两次条件。我可以写这样的东西:

while (node->left != nullptr)
    node = node->left;
else while (node->right != nullptr)
    node = node->right;
else return;

如果我可以在 if 中使用 while 也会很有帮助。像这样的东西:

while (...) ...
else if (...) ... 
else while (...) ...
else ...

编辑: 刚刚意识到树的例子不是一个好例子。但通常我可以做这样的事情吗?

标签: c++loopsif-statementwhile-loopconditional-statements

解决方案


我的意思是,这将满足您的要求

if (node->left != nullptr)
    while (node->left != nullptr)
        node = node->left;
else if (node->right != nullptr)
    while (node->right != nullptr)
        node = node->right;
else return;

但也许最好检查一下node不是nullptr(如果你以前没有这样做)

if (node && node->left != nullptr)
    while (node->left != nullptr)
        node = node->left;
else if (node && node->right != nullptr)
    while (node->right != nullptr)
        node = node->right;
else return;

推荐阅读