数据结构三元组实验报告_数据结构 实验五  稀疏矩阵的三元组实现实验

一、实验目的及要求:

掌握稀疏矩阵的三元组表示方法、算法实现。

二、实验内容:

(1) 基于三元组的稀疏矩阵表示与输入、输出方法(必做);

(2) 基于三元组的稀疏矩阵加法(选做);

(3) 基于三元组表示的稀疏矩阵转置(选做);

(4) 基于三元组表示的稀疏矩阵的乘法(选做)。

三、实验准备:

1) 计算机设备;2) 程序调试环境的准备,如TC环境;3) 实验内容的算法分析与代码设计与分析准备。

四、实验步骤和实验过程(该部分不够填写.请填写附页)

1,对实验问题的描述:

采用矩阵的压缩存储可以减少存储矩阵的空间:即为多个值相同的元只分配一个存储空间;对零元不分配存储空间,只需存储稀疏矩阵的非零元。可以采用一个三元组(i,j,a)确定矩阵的非零元,由此,稀疏矩阵可由表示非零元的三元组及其行列数唯一确定。按照稀疏矩阵的三元组实现矩阵的输入输出,相加,相乘的基本操作。

2,算法的数据结构

#define MAXSIZE 1000

typedef struct {

int i,j;

ElemType v;

}Triple;

typedef struct {

Triple

data[MAXSIZE+1];

int mu, nu,

tu;

} Spmatrix;

3,算法基本操作的说明及分析

1,稀疏矩阵的创建

int CreatTriple(Spmatrix *a)

{

int i;

printf("input the max

row and col script and the number of unzero

element(mu,nu,tu)::");

scanf("%d,%d,%d",&a->mu,&a->nu,&a->tu);

printf("input the col

and row script for each Item(i,j,v)::\n");

for(i=1;i<=a->tu;i++)

{

scanf("%d,%d,%d",&a->data[i].i,&a->data[i].j,&a->data[i].v);

}

return OK;

}

2,两个稀疏矩阵相加

int TripleAdd( Spmatrix triple_a, Spmatrix

triple_b, Spmatrix *triple_c)

{

int i=1,j=1,k=1;

if((triple_a.mu!=triple_b.mu)||(triple_a.nu!=triple_b.nu)){

printf("The Script is different!");

exit(0);

}

else{

while(i<=triple_a.tu

&&

j<=triple_b.tu){

if(triple_a.data[i].j

triple_c->data[k].i=triple_a.data[i].i;

triple_c->data[k].j=triple_a.data[i].j;

triple_c->data[k].v=triple_a.data[i].v;

k++;

i++;

}

else

if(triple_a.data[i].j>triple_b.data[j].j){

triple_c->data[k].i=triple_b.data[j].i;

triple_c->data[k].j=triple_a.data[j].j;

triple_c->data[k].v=triple_a.data[j].v;

k++;

j++;

}

else{

triple_c->data[k].i=triple_b.data[j].i;

triple_c->data[k].j=triple_a.data[j].j;

triple_c->data[k].v=triple_a.data[i].v+triple_b.data[j].v;

k++;

i++;

j++;

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值