实验指导-数组.docVIP

  • 1
  • 0
  • 约 3页
  • 2017-06-07 发布于重庆
  • 举报
实验指导-数组

实验四 数组的应用 一、实验题目 数组的应用 二、实验课时 2课时 1.掌握数组的概念、特点; 2.熟悉数组的顺序存储结构; 3.熟悉矩阵的三元组存储及相关运算的实现; .掌握的相关应用问题的程序设计方法,培养分析问题、解决问题的能力。 ? 1.typedef struct tupnode int r; //行号 int c; //列号 int d; //数值 TupNode; typedef struct tsmatrix TupNode data[maxsize]; int rows; //总行数 int cols; //总列数 int nums; //非0元素总个数 TSMatrix; 实现题目要求的源代码参见目录。代码中包含有五处错误,请调试修改。在实验报告中不用贴代码,但要展示运行结果界面图。 思考: (1)、算法的时间复杂度分析? (2)、改算法效率高否?若想提高效率,该做何改进? 2、继续完成题1中的功能,实现两个具有相同行列数的稀疏矩阵的加法运算。 具体要求: 同上,原始矩阵及结果矩阵均采用三元组压缩存储,输出结果按矩阵的行列形式输出。 相关提示: 求两个稀疏矩阵和的算法类似于两个多项式的加法,将两个矩阵同行且同列的元素相加,若和非0,将和加入到结果表中;仅在一个矩阵中的某个位置出现的元素,直接插入到结果表中。 3、继续完成题1中的功能,实现两个具有相同行列数的稀疏矩阵的乘法运算。 附录:基于三元组存储的矩阵转置算法(代码中含五处错误,请调试修改) #include #define N 4 #define MaxSize 100 typedef struct tupnode int r; int c; int d; TupNode; typedef struct matrix TupNode data[MaxSize]; int rows; int cols; int nums; TSMatrix; void CreatMat TSMatrix t,int a[N][N] int i,j; t.rows N; t.cols N; for i 0;i N;i++ for j 0;j N;j++ if a[i][j]! 0 t.data[t.nums].r i; t.data[t.nums].c j; t.data[t.nums].d a[i][j]; t.nums++; void DispMat TSMatrix t int i; if t.nums 0 return; cout t.rows t.cols t.nums endl; cout for i 0;i t.nums;i++ cout t.data[i].r t.data[i].c t.data[i].d endl; void TranMat TSMatrix tsa,TSMatrix tsc int p,q,v; tsc.rows tsa.cols; tsc.cols tsa.rows; tsc.nums tsa.nums; if tsa.nums! 0 for v 0;v tsa.cols;v++ for p 0;p tsa.nums;p++ if tsa.data[p].c v tsc.data[q].c tsa.data[p].r; tsc.data[q].r tsa.data[p].c; tsc.data[q].d tsa.data[p].d; p++; void DispNN TSMatrix t int i,j,k,flag; for i 0;i t.rows;i++ for j 0;j t.cols;j++ flag 0; for k 0;k t.nums;k++ if i t.data[k].r j t.data[k].c cout t.data[k].d ; flag 1; break; if flag 0 cout 0 ; cout endl; void main int a[N][N] 1,0,3,0 , 0,1,0,0 , 0,0,1,0 , 0,0,1,1 ; TSMatrix tsa,tsc; CreatMat tsa,a ; cout a的三元组为: endl; DispMat tsa ; cout a转置后的三元组为: endl; TranMat tsc,tsa ; DispMat tsc ; cout a转置后的结果矩阵为: endl; DispNN tsc ;

文档评论(0)

1亿VIP精品文档

相关文档