用三元组表存储表示-求稀疏矩阵M转置函数T 下载本文

内容发布更新时间 : 2025/1/21 6:02:51星期一 下面是文章的全部内容请认真阅读。

实用文案

实验目的

采用三元组表存储表示,求稀疏矩阵M转置函数T

实验内容

编程序并上机调试运行。

采用三元组表存储表示,求稀疏矩阵M转置函数T

编写程序

//采用三元组表存储表示,求稀疏矩阵M转置函数T

#include #define MAXSIZE 100

typedef struct {

int i,j; int e; }Triple;

typedef struct {

Triple data[MAXSIZE+1]; int mu,nu,tu; }TSMatrix;

//创建稀疏矩阵M

CreateSMatrix(TSMatrix *M) {

int i,m,n,e,k;

printf(\输入矩阵M的行数、列数、非零元的个数(中间用逗号隔开):\ scanf(\ (*M).data[0].i=0; printf(\

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

标准

实用文案

do {

printf(\输入第%d个非零元素所在的行(1~%d)列(1~%d)值以及该数值:\

scanf(\ k=0;

if(m<1||m>(*M).mu||n<1||n>(*M).nu) k=1;

if(m<(*M).data[i-1].i||m==(*M).data[i-1].i&&n<(*M).data[i-1].j) k=1; }while(k); (*M).data[i].i=m; (*M).data[i].j=n; (*M).data[i].e=e; }

printf(\ return 1; }

//输出稀疏矩阵M

void PrintSMatrix(TSMatrix M) {

int i;

printf(\ for(i=1;i<=M.tu;i++)

printf(\printf(\ printf(\}

//求稀疏矩阵M的转置矩阵T

void TransposeSMatrix(TSMatrix M,TSMatrix *T) {

int p,q,col; (*T).mu=M.nu; (*T).nu=M.mu; (*T).tu=M.tu; if((*T).tu) {

q=1;

for(col=1;col<=M.nu;++col)

标准

实用文案

for(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 1; }

//打印矩阵函数,以通常形式输出矩阵 void print(TSMatrix A) {

int k=1,a,b;

int M[MAXSIZE][MAXSIZE];

printf(\非零元素所对应的位置:\\n\

printf(\ for(a=0;a

for(b=0;b

while(k<=A.tu) {

M[A.data[k].i-1][A.data[k].j-1]=A.data[k].e; k++; }

for(a=0;a

printf(\ for(b=0;b

printf(\ printf(\ }

printf(\ printf(\}

//主函数 int main() {

标准