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

如何用C++将链式节点存储的矩阵以表格形式输出?

Hi Roger! 作为C++初学者能自己实现链式稀疏矩阵已经很棒了👏 针对你想把输出改成表格形式的需求,我来一步步帮你调整代码:

问题分析

你当前的Printout()只是遍历所有存在的节点并输出位置和值,但要实现像1 2 3 4 5 6 7 8 9这样的行式输出,需要按行逐列遍历,遇到有值的节点就输出值,没有的话补0(稀疏矩阵的常规做法),同时得先确定矩阵的最大行和列,不然不知道要输出多少行多少列。

关键修改步骤

1. 修复数组越界的隐藏bug

你的Init()函数循环初始化了x[0]到x[10](共11个元素),但main()里定义的element *a[10]只有10个元素(索引0-9),插入行号10的时候会导致数组越界!先把main()里的数组定义改成:

element *a[11], *b[11], *sum[11];

2. 重写Printout()函数

修改后的函数会先遍历所有节点找到矩阵的边界,再逐行逐列输出:

void Printout(element *x[]) {
    int max_row = -1;
    int max_col = -1;

    // 第一步:遍历所有节点,确定矩阵的最大行和列
    for (int i = 0; i < 11; i++) {
        element *temp = x[i];
        while (temp != NULL) {
            if (temp->row > max_row) max_row = temp->row;
            if (temp->column > max_col) max_col = temp->column;
            temp = temp->next;
        }
    }

    // 处理空矩阵的情况
    if (max_row == -1) {
        cout << "This matrix is empty" << endl;
        return;
    }

    // 第二步:逐行逐列输出矩阵
    for (int i = 0; i <= max_row; i++) {
        element *current = x[i]; // 当前行的链表头指针
        for (int j = 0; j <= max_col; j++) {
            // 如果当前节点存在且列号匹配,输出值并移动指针
            if (current != NULL && current->column == j) {
                cout << current->value << " ";
                current = current->next;
            } else {
                cout << "0 "; // 稀疏矩阵空白处补0,不需要的话可以改成""
            }
        }
        cout << endl; // 每行结束换行
    }
}

代码逻辑解释

  • 确定矩阵边界:先遍历所有节点,记录最大的行号和列号,这样我们就知道要输出多少行多少列。
  • 逐行输出:对每一行,从第0列到最大列遍历:
    • 如果当前行的链表中存在对应列的节点,就输出它的值,并移动到链表的下一个节点(因为你的插入逻辑是按列排序的,所以可以顺序遍历)。
    • 如果没有对应节点,就输出0(如果你不需要显示0,直接输出空格也可以,但稀疏矩阵通常会补0来体现完整结构)。

额外小建议

  • 你的代码里用到了<conio.h>和<process.h>,这两个是Windows特有的头文件,而且代码里并没有用到它们的函数,可以删掉,这样代码的兼容性更好。
  • 在C++中,更推荐用new替代malloc来分配内存,比如把element *news = (element*)malloc(sizeof(element));改成element *news = new element;,不过用malloc对于初学者来说也没问题。

测试效果

如果你插入(0,0)=1、(0,1)=2、(0,2)=3、(1,0)=4、(1,1)=5、(1,2)=6、(2,0)=7、(2,1)=8、(2,2)=9,输出会变成:

1 2 3 
4 5 6 
7 8 9 

完美符合你的需求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:13:05