问题描述
- 请问这个稀疏矩阵转置的代码哪组测试数据不对??我没有测试出来。
-
#include<stdio.h> #define MAX_SIZE 100 #define OK 1 #define ERROR -1 typedef int ElemType; typedef int Status; typedef struct { int i, j; ElemType e; }Triple; typedef struct { Triple data[MAX_SIZE]; int mu, nu, tu; }TSMatrix; Status creatSMatrix(TSMatrix &M) { int row, col, k = 0; scanf("%d %d", &M.mu, &M.nu); for(row = 1; row <= M.mu; row++) { for(col = 1; col <= M.nu; col++) { scanf("%d", &M.data[k].e); if(M.data[k].e) { M.data[k].i = row; M.data[k].j = col; k++; } } } M.tu = k; // printf("k = %dn", k); return OK; } Status printfMatrix(TSMatrix M) { int row, col, temp, k = 0; // printf("T.mu=%d T.nu=%dn", M.mu, M.nu); for(row = 1; row <= M.mu; row++) { for(col = 1; col <= M.nu; col++) { if(row == M.data[k].i && col == M.data[k].j) { printf("%d ", M.data[k].e); k++; } else printf("0 "); } printf("n"); } } Status transportSMatrix(TSMatrix M, TSMatrix &T) { int col, p, k = 0; T.mu = M.nu; T.nu = M.mu; T.tu = M.tu; for(col = 1; col <= M.nu; col ++){ for(p = 0; p < M.tu; p ++){ if(col == M.data[p].j) { T.data[k].i = M.data[p].j; T.data[k].j = M.data[p].i; T.data[k].e = M.data[p].e; k ++; } } } // printf("M.data[1].j=%d k = %dn", M.data[1].j, k); } Status destoryMatrix(TSMatrix &M){ M.mu = M.nu = M.tu = 0; } int main() { TSMatrix M, T; creatSMatrix(M); transportSMatrix(M, T); printfMatrix(T); destoryMatrix(M); return 0; }
时间: 2024-11-17 01:40:01