You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确统计栈中节点?我的区间节点计数循环漏统计末节点

问题分析与修复方案

嘿,我一眼就瞅出问题在哪了——你的循环条件把栈的最后一个节点给直接跳过啦!

咱们来拆解下你的代码逻辑:当前的for循环判断条件是node.link != null,这意味着只有当当前节点存在下一个节点时,才会执行循环里的统计操作。但栈的最后一个节点,它的link字段必然是null对吧?所以这个节点根本没机会进入循环体,自然就没被统计到。

给你两种修复方案,推荐第一种:

方案一:修改循环条件,遍历所有节点

直接把循环条件改成node != null,这样从栈顶开始,每个节点都会被检查到,直到遍历完所有节点:

public int intervalNumbers() {
    int counter = 0;
    Node node;
    // 遍历所有节点,直到node为null(所有节点都处理完)
    for (node = top; node != null; node = node.link) {
        if (node.data >= -10 && node.data <= 10) {
            counter++;
        }
    }
    return counter;
}

方案二:循环后单独检查最后一个节点(不推荐)

如果非要保留原来的循环结构,可以在循环结束后,单独对最后一个节点做判断(记得加空指针防护,避免栈为空时出错):

public int intervalNumbers() {
    int counter = 0;
    Node node;
    for (node = top; node.link != null; node = node.link) {
        if (node.data >= -10 && node.data <= 10) {
            counter++;
        }
    }
    // 循环结束后,node指向最后一个节点,单独检查
    if (node != null && node.data >= -10 && node.data <= 10) {
        counter++;
    }
    return counter;
}

显然第一种方案更简洁可靠,它能完美处理所有边界情况——比如栈为空、栈只有一个节点的场景,都不会出问题。

内容的提问来源于stack exchange,提问作者Eddie Rukmanis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:47:57