c++ - For vs While 用于查找链表中的最后一项

标签 c++ c++11 for-loop while-loop

我应该使用 for 还是 while 循环来查找链表中的最后一项?

Item * last = list;
for (; last->next; last = last->next) ;

对比

Item * last = list;
while (last->next)
{
    last = last->next;
}

它是 2 行而不是 5 行,而且看起来几乎同样可读。为什么我总是只看到 while 形式?

最佳答案

Why I always see only the while form?

首选 while 形式有两个原因:

  • 循环体为空的循环不如循环体中至少有一个语句的循环可读 - 刚接触 C 的程序员发现 for 循环后的分号令人困惑,甚至完全错过分号,不了解发生了什么。 while 循环就没有这样的混淆。
  • for 循环以及在循环外声明的循环变量提供了一个强有力的指示,表明您实际上需要一个 while 循环 - 循环变量的作用域是循环体。当您在循环外声明它们时,是因为您希望在循环结果中包含循环变量的结束值。

关于c++ - For vs While 用于查找链表中的最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37363915/

相关文章:

c++ - 如何使用公共(public)函数访问私有(private)变量?

c++ - 如何使用 casablanca (PPL) http_client 返回的 XmlLite 处理 XML?

c++ - sal 缓冲区注释上的额外下划线 ( _ ) 是什么?

performance - for 循环中的 If 和 Continue 语句

arrays - 验证一个 url 是它要去的地方 Swift

FA 中的 C++ "call of overloaded is ambiguous"

c++ - 这段代码可以编译吗?

c++ - 你能用 lambda 比较器交换 std::queue 吗?

python - 循环遍历类实例列表

c++ - 链接列表 添加 CPP