noah&plus 2015-11-08 02:48 采纳率: 0%
浏览 554

请问这个稀疏矩阵转置的代码哪组测试数据不对??我没有测试出来。

图片说明

#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 = %d\n", k);
    return OK;
}

Status printfMatrix(TSMatrix M) {
    int row, col, temp, k = 0;
//  printf("T.mu=%d T.nu=%d\n", 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 = %d\n", 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;
}


  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 sub地址DHCP问题
    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办
    • ¥15 kylin启动报错log4j类冲突
    • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大