. . 信息工程学院计算机系《数据结构与算法》实验报告姓名学号实验成绩班级实验日期项目号、实验名称3、利用三元组表实现矩阵相加实验要求(任课教师提供)1、该实验要求掌握矩阵的压缩存储和相关的应用;2、验证性实验要求在实验前认真研读相关教材,作好充分的预习准备工作,写出实验预习报告;3、学生必须在规定时间内独立完成,对实验过程中出现的问题,要求尽量做到独立思考,独立解决;4、每次实验的结果必须经过教师认可后,实验方可结束;5、要求学生必须认真对待每一个实验,不得缺席、迟到、早退;6、要求实验中认真做好实验记录,实验后认真完成实验报告;实验内容(由学生填写)1.代码#include #include #define MAX 10 typedef struct { int i,j; int v; }TriTupleNode; typedef struct { TriTupleNode data[MAX]; int m; int n; int t; }TSMatrix; . . void InitTriTupleNode(TSMatrix *a,char &m) { int i,j,v,k; k=1; printf(" 输入三元组表非零元素的位置和值,输入以 -1 -1 0 结束\n"); while(i!=-1 && j!=-1) { printf(" 请输入三元组表 %c 非零元素的位置和值: ",m); scanf("%d %d %d",&i,&j,&v); a->data[k].i=i; a->data[k].j=j; a->data[k].v=v; k++; } a->t=k; } void ShowMatrix(TSMatrix *a) { int i,j,k=1; for(i=1;i<=a->m;i++) { for(j=1;j<=a->n;j++) { if(i==a->data[k].i && j==a->data[k].j) { printf("%d ",a->data[k].v); k++; } else . . printf("0 "); } printf("\n"); } } void AddTSMatrix(TSMatrix *a,TSMatrix *b) { int i,j,k=1,n=1; for(i=1;i<=a->m;i++) { for(j=1;j<=a->n;j++) { if(i==a->data[k].i && j==a->data[k].j) { if(i==b->data[n].i && j==b->data[n].j) { printf("%d ",a->data[k].v+b->data[n].v); k++; n++; } else { printf("%d ",a->data[k].v); k++; } } else { . . if(i==b->data[n].i && j==b->data[n].j) { printf("%d ",b->data[n].v); n++; } else printf("0 "); } } printf("\n"); } } int main() { int c; do { int maxrow,maxcol; char m='a',n='b'; system("CLS"); TSMatrix a,b; TSMatrix *pa=&a, *pb=&b; printf(" 请输入你要创建的矩阵的行列数:"); scanf("%d %d",&maxrow,&maxcol); pa->m=maxrow; pa->n=maxcol; pb->m=maxrow; pb->n=maxcol; InitTriTupleNode(pa,m); . . InitTriTupleNode(pb,n); system("CLS"); printf(" 三元组表示的矩阵 a 为:\n"); ShowMatrix(pa); printf(" 三元组表示的矩阵 b 为:\n"); ShowMatrix(pb); printf(" 三元组表示的矩阵 a+b 为:\n"); AddTSMatrix(pa,pb); printf("\t\t\t\t 是否继续测试 :\n"); printf("\t\t\t\t1. 是\n"); printf("\t\t\t\t2. 否\n"); printf("\t\t\t\t 输入你的选择: "); scanf("%d",&c); while(c!=1 && c!=2) { printf("\t\t\t\t\n 输入有误 !请重新输入你的选择 :"); scanf("%d",&c); } }while(c==1); return 0; } . . 评语(由教师填写)2.截图图 2.1 三元组表的录入图 2.2 矩阵相加后的结果