数据结构书上c语言矩阵转置算法,[数据结构]矩阵的快速转置算法 解题报告

Problem Description

数据压缩是提高传输、存储效率一种技术。教材第5章介绍了两种简单的压缩存储方法。

本实验要求实现三元组顺序表表示下的矩阵快速转置算法。

输入:

稀疏矩阵的行数、列数、非零元个数(三个数都大于0)

]以行为主序输入稀疏矩阵三元组表

输出:

辅助数组num[ ]

辅助数组cpot[ ]

以行为主序输出对应的转置矩阵三元组表

测试输入

6 7 8

1 2 12

1 3 9

3 1 -3

3 6 14

4 3 24

5 2 18

6 1 15

6 4 -7

测试输出

num:2,2,2,1,0,1,0,

cpot:1,3,5,7,8,8,9,

1,3,-3

1,6,15

2,1,12

2,5,18

3,1,9

3,4,24

4,6,-7

6,3,14

AcCode

//

// main.cpp

// 矩阵的快速转置算法

//

// Created by jetviper on 2017/3/26.

// Copyright © 2017年 jetviper. All rights reserved.

//

#include

#define MAX 100

typedef struct {

int i, j, e;

}list;

typedef struct {

list data[MAX];

int mu, nu, tu;

}TS;

int main()

{

TS M,T;

int num[MAX], cpot[MAX];

int i, t, p, q, col;

scanf("%d%d%d", &M.mu, &M.nu, &M.tu);

for (i = 0; i < 100; i++)num[i] = 0;

for (i = 1; i <= M.tu; i++)scanf("%d%d%d", &M.data[i].i, &M.data[i].j, &M.data[i].e);

for (t = 1; t <= M.tu; ++t)++num[M.data[t].j];

cpot[1] = 1;

for (col = 2; col <= M.nu; col++)cpot[col] = cpot[col - 1] + num[col - 1];

printf("num:");

for (i = 1; i <= M.nu; i++)printf("%d,", num[i]);

printf("\ncpot:");

for (i = 1; i <= M.nu; i++)printf("%d,", cpot[i]);

printf("\n");

for (p = 1; p <=M.tu; ++p) {

col = M.data[p].j;

q = cpot[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;

cpot[col]++;

}

for (i = 1; i <= M.tu; i++)printf("%d,%d,%d\n", T.data[i].i, T.data[i].j, T.data[i].e);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值