稀疏矩阵利用三元组相乘(c语言)

本文探讨了在C语言中利用三元组处理稀疏矩阵转置的问题,指出《数据结构(C语言版)》一书中相关代码存在的错误,包括数据类型不匹配和边界条件处理不当。作者通过实践发现并纠正了这些错误,并强调动手实践的重要性。文中附有作者绘制的过程图,以帮助读者理解。欢迎交流讨论,共同进步。
摘要由CSDN通过智能技术生成

被这个稀疏矩阵折磨了很久,看了将近一个半礼拜,看的我很想撕书。
这个是程序思想是和数据结构(c语言版)机械工业出版社的学习的,书 代码讲解不是很详细,搜了网上很多代码,都是抄了一下,草草注释,在我自己写的时候发现书上的代码是有问题的。
书上p48,new_b使用int类型,但是转置是term类型,而且转置都是用了一位数组。
还有就是书上的边界条件处理的是有问题的,如果原封不动的写,最后结果会是两行叠加的答案,我写了两种方法
书上显然是错的,查了很多中文版本,代码都是错的,没有查到英文版,不知道是什么状况,有哪位看到英文版的代码,请给我发一下原版,不胜感激!!!
都说国外书很好,但是我觉得还是自己多动手,不能光看,尽信书不如无书,这个题也警示我要多动手!!!

大家只要耐心的看程序下面的图就可以大概了解过程,过程图是我自己画的,画的不是太好,如果大家觉得这篇博客可以帮到你,大家可以随意转载,能帮到大家非常开心,写的不对的地方希望大家提出来,希望和大家一起进步!!!

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX_TERMS 101
#define MAX_COL 50
typedef struct{
    int col;
    int row;
    int value;
}term;
term a[MAX_TERMS];
term b[MAX_TERMS];
term d[MAX_TERMS];
void fast_transpose(term a[],term b[]);
void mmult(term a[],term b[],term d[]);
int compare(int a,int b);
void storesum(term d[],int *totald,int row,int column,int *sum);
int main()
{
    int value;
    int count = 1;
    printf("请输入将要输入a矩阵的行和列数\n");
    scanf("%d%d",&a[0].row,&a[0].col);
    printf("请输入数据\n");
    for(int i = 1;i <= a[0].row;i++)
        for(
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值