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

如何不使用C++标准库按指定格式输出无向加权图的邻接表

邻接表格式输出修改方案

你当前代码的问题是每匹配到一个邻接节点,就完整打印「顶点编号-->邻接节点」并换行,导致同一个顶点的邻接关系被拆分成了多行。只需要调整输出顺序和换行时机即可实现目标格式,全程不需要引入额外的C++标准库组件,符合作业要求。

修改思路

  • 遍历每个顶点时,先打印当前顶点编号,不换行
  • 增加标记位判断是否是当前顶点的第一个邻接节点,匹配目标格式的空格要求
  • 遍历邻接节点的全程不换行,所有邻接节点打印完成后再统一插入换行符,实现一行对应一个顶点的邻接关系

完整修改后代码

#include <iostream>
using namespace std;

int main()
{
    int nodes = 7;
    // 固定长度数组,避免可变长度数组兼容性问题,未使用任何标准库容器
    int graphList[7][7];

    for(int i = 0; i < nodes; i++){
        for(int j = 0; j < nodes; j++){
            graphList[i][j] = 0;
        }
    }

    int n1, n2, weight;
    for(int j = 0; j < 8; j++){
        cin >> n1 >> n2 >> weight;
        graphList[n1][n2] = weight;
        graphList[n2][n1] = weight;
    }

    cout << "Adjacent list: \n";
    for(int i = 0; i < nodes; i++){
        // 先打印当前顶点编号
        cout << i;
        // 标记是否是当前顶点的第一个邻接节点,用来匹配格式空格
        int is_first = 1;
        for(int j = 0; j < nodes; j++){
            if(graphList[i][j] != 0){
                if(is_first){
                    // 第一个邻接节点的连接符后面带空格,前面不带
                    cout << "--> " << j;
                    is_first = 0;
                }else{
                    // 后续邻接节点的连接符前后都带空格
                    cout << " --> " << j;
                }
            }
        }
        // 当前顶点所有邻接节点打印完成后再换行
        cout << endl;
    }

    return 0;
}

内容的提问来源于stack exchange,提问作者Shakil Mahmud Shanto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:21:03