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

C++多服务器队列模拟(超市场景)代码输出异常问题咨询

问题原因及修复方案

问题1:queue_total统计结果与实际队列人数不匹配

原因出在Queue类的enqueue方法计数逻辑错误:

  • 当向空队列插入第一个元素时,代码执行完空队列分支直接return,没有执行++count计数操作
  • 只有后续插入非首元素时才会执行++count,最终导致size()返回的count值永远比队列实际元素数少1(非空队列场景)
  • queue_total通过累加所有队列的size()返回值统计总人数,自然和实际展示的元素总数不一致。

问题2:新顾客不会入队到最短队列

这个问题同样是enqueue的计数错误导致的:

  • shortest_queue函数判断队列长度时调用的是size()方法,由于size()返回值不准,长度比较逻辑完全失效,自然无法找到真实的最短队列。

修复方案

仅需要修改Queue类的enqueue方法,将计数操作提前到插入逻辑之前即可:

void enqueue(int x) {
    // 创建新节点
    Node* temp = new Node(x);
    // 只要新增元素就统一计数+1,解决首元素漏计数问题
    ++count;

    // 如果队列为空,新节点同时作为队头和队尾
    if (empty()) {
        front = rear = temp;
        return;
    }

    // 非空队列则将新节点追加到队尾
    rear->next = temp;
    rear = temp;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:15:01