|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <stdlib.h>
- #define MAXSIZE 12500
- typedef struct {
- int i, j; // 非零元的行号,列号
- int e;
- }Triple;
- typedef struct {
- Triple data[MAXSIZE + 1];
- int mu, nu, tu; //矩阵的行数,列数,非零元个数
- }TSMatrix;
- //创建稀疏矩阵
- void create(TSMatrix *M, int mu, int nu, int tu) {
- (*M).mu = mu;
- (*M).nu = nu;
- (*M).tu = tu;
- M = (TSMatrix *)malloc(tu * sizeof(Triple));
- }
- //压缩存储稀疏矩阵
- void init(TSMatrix *M) {
- for (int n = 1; n <= (*M).tu; n++) {
- printf("输入第%d个非零元,格式为“行号 列号 值”(空格隔开):", n);
- int row, col, value;
- scanf_s("%d %d %d", &row, &col, &value);
- (*M).data[n].i = row;
- (*M).data[n].j = col;
- (*M).data[n].e = value;
- }
- }
- //对压缩稀疏矩阵M转置,并返回转置后的压缩稀疏矩阵
- TSMatrix TransposeSMatrix(TSMatrix M) {
- TSMatrix T;
- create(&T, M.nu, M.mu, M.tu);
- if (T.tu) {
- int q = 1;
- for (int col = 1; col <= M.mu; ++col)
- for (int p = 1; p <= M.tu; ++p)
- if (M.data[p].j == col) {
- T.data[q].i = M.data[p].j;
- T.data[q].j = M.data[p].i;
- T.data[q].e = M.data[p].e;
- ++q;
- }
- }
- return T;
- }
- int main() {
- TSMatrix M;
- int m_mu, m_nu, m_tu;
- printf("输入稀疏矩阵的行数、列数和非零元个数(以英文逗号隔开):");
- scanf_s("%d,%d,%d", &m_mu, &m_nu, &m_tu);
- create(&M, m_mu, m_nu, m_tu);
- init(&M);
- printf("矩阵M: \n");
- display_TSMatrix(M); ////////////// //找不到标识符
- TSMatrix T = TransposeSMatrix(M);
- printf("M转置后的矩阵为:\n");
- display_TSMatrix(T); ////////// //未定义标识符
- return 0;
- }
复制代码
错误已标出,请问该如何解决?
因为,编译器找不到 display_TSMatrix 的声明。
解决办法:
在 main 函数上面定义 display_TSMatrix
或者:
include 包含 display_TSMatrix 的头文件
|
|