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

读取数据构建双权重邻接表时循环卡死问题求助

问题分析与解决

你的代码卡在cin输入处,大概率是以下两种情况导致:

1. 输入未正确结束

当你在终端手动输入数据时,程序会持续等待输入,直到你明确告知输入完成:

  • Windows系统:输入完所有数据后,按 Ctrl+Z 再按回车
  • Linux/macOS系统:输入完所有数据后,按 Ctrl+D

如果是通过文件重定向输入,要确保文件内容完全匹配给定格式,没有缺失或多余的行。

2. 输入过程中cin进入失败状态

若输入的数据格式不符合要求(比如混入非数字字符),cin会进入失败状态,后续读取操作都会直接失效,导致循环无法正常终止。可以在读取后检查cin状态,及时中断异常循环:

修改readNetwork函数如下:

void readNetwork(vector<vector<Road>> &adjList) {
    if (!(cin >> N >> M >> T)) {
        cerr << "输入N/M/T失败" << endl;
        return;
    }
    adjList.resize(N);
    for (int i = 0; i < M; i++){
        int x, y, l, c;
        if (!(cin >> x >> y >> l >> c)) {
            cerr << "第" << i+1 << "条边输入失败" << endl;
            break;
        }
        adjList[x].push_back({y,l,c});
    }
}

额外调试建议

可以在循环中添加输出语句,直观确认每一次读取的执行情况:

for (int i = 0; i < M; i++){
    int x, y, l, c;
    cout << "读取第" << i+1 << "条边:" << endl;
    cin >> x >> y >> l >> c;
    cout << "结果:" << x << " " << y << " " << l << " " << c << endl;
    adjList[x].push_back({y,l,c});
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:25:30