鱼C论坛

 找回密码
 立即注册
查看: 2025|回复: 2

[已解决]求助关于算法与数据结构 稀疏矩阵

[复制链接]
发表于 2020-5-31 16:46:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>
  2. #include <stdlib.h>  
  3. #define MAXSIZE 12500

  4. typedef struct {
  5.         int i, j;                //        非零元的行号,列号
  6.         int e;
  7. }Triple;

  8. typedef struct {
  9.         Triple data[MAXSIZE + 1];
  10.         int mu, nu, tu;                //矩阵的行数,列数,非零元个数
  11. }TSMatrix;
  12. //创建稀疏矩阵
  13. void create(TSMatrix *M, int mu, int nu, int tu) {
  14.         (*M).mu = mu;
  15.         (*M).nu = nu;
  16.         (*M).tu = tu;
  17.         M = (TSMatrix *)malloc(tu * sizeof(Triple));
  18. }

  19. //压缩存储稀疏矩阵
  20. void init(TSMatrix *M) {
  21.         for (int n = 1; n <= (*M).tu; n++) {
  22.                 printf("输入第%d个非零元,格式为“行号 列号 值”(空格隔开):", n);
  23.                 int row, col, value;
  24.                 scanf_s("%d %d %d", &row, &col, &value);
  25.                 (*M).data[n].i = row;
  26.                 (*M).data[n].j = col;
  27.                 (*M).data[n].e = value;
  28.         }
  29. }
  30. //对压缩稀疏矩阵M转置,并返回转置后的压缩稀疏矩阵
  31. TSMatrix TransposeSMatrix(TSMatrix M) {
  32.         TSMatrix T;
  33.         create(&T, M.nu, M.mu, M.tu);
  34.         if (T.tu) {
  35.                 int q = 1;
  36.                 for (int col = 1; col <= M.mu; ++col)
  37.                         for (int p = 1; p <= M.tu; ++p)
  38.                                 if (M.data[p].j == col) {
  39.                                         T.data[q].i = M.data[p].j;
  40.                                         T.data[q].j = M.data[p].i;
  41.                                         T.data[q].e = M.data[p].e;
  42.                                         ++q;
  43.                                 }
  44.         }
  45.         return T;
  46. }
  47. int main() {

  48.         TSMatrix M;
  49.         int m_mu, m_nu, m_tu;
  50.         printf("输入稀疏矩阵的行数、列数和非零元个数(以英文逗号隔开):");
  51.         scanf_s("%d,%d,%d", &m_mu, &m_nu, &m_tu);
  52.         create(&M, m_mu, m_nu, m_tu);
  53.         init(&M);
  54.         printf("矩阵M: \n");
  55.         display_TSMatrix(M);          ////////////// //找不到标识符

  56.         TSMatrix T = TransposeSMatrix(M);
  57.         printf("M转置后的矩阵为:\n");
  58.         display_TSMatrix(T);        //////////   //未定义标识符


  59.         return 0;
  60. }
复制代码




错误已标出,请问该如何解决?
最佳答案
2020-5-31 23:30:06
因为,编译器找不到 display_TSMatrix 的声明。

解决办法:
在 main 函数上面定义 display_TSMatrix
或者:
include 包含 display_TSMatrix 的头文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-31 23:30:06 | 显示全部楼层    本楼为最佳答案   
因为,编译器找不到 display_TSMatrix 的声明。

解决办法:
在 main 函数上面定义 display_TSMatrix
或者:
include 包含 display_TSMatrix 的头文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-31 23:33:15 | 显示全部楼层
赚小钱 发表于 2020-5-31 23:30
因为,编译器找不到 display_TSMatrix 的声明。

解决办法:

我找到原因了,中间有一段带代码漏掉了。现在已经解决了。实在抱歉!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 21:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表