c++ - 如果不满足循环条件,如何执行一段代码?
问题描述
假设我有一棵树,我想继续从当前节点向左走。如果当前节点没有左边,我想继续往右走。否则返回。要做这样的事情,我必须写这样的东西:
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 ...
编辑: 刚刚意识到树的例子不是一个好例子。但通常我可以做这样的事情吗?
解决方案
我的意思是,这将满足您的要求
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;
推荐阅读
- c++ - 带有 clang++ 的 throw() 显示可能的内存泄漏
- c# - Net Core Identity - 在外部注册时询问用户缺少的信息/要求接受 Ts & Cs
- jquery - ASP.net MVC 控制器从 Ajax 发送时接收空数组
- angular - *ngFor 循环中的多个输入文件的问题
- java - jar 顶层内的多个入口点(主类)
- javascript - Firebase 实时数据库规则防止节点删除
- sql-server - 如何为在 Docker for MSSQL Server 中运行的 Kafka 设置 Debezium
- mysql - 单个 SQL 连接可以运行并发事务吗?
- php - 使用 XMLreader 和 PHP 进行搜索和获取
- php - 使用 JSON 原始数据 Laravel 搜索 SQL