logo资料库

数据结构数组的实验报告.doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
一 试验目的和要求 1. 实验目的 了解数组的两种存储表示方法,并掌握数组在以行动为主的存储结构中的地址计算方 法。 2.. 实验要求 熟悉掌握数组的类型定义和表示方式;能够进行灵活的运用。 二 实验环境 本程序可以在 98/2000/XP 下运行,可以用 VC++6.0 执行 三 程序的逻辑框图 建立结构体 调 用 CreateSMatrix 函数 创建矩阵 A,B 输入 1,2 或 3 进入 选择 3 选择 1 选择 2 调 用 AddSMatrix 函 数并输出矩阵的和 调 用 SubSMatrix 函 数并输出矩阵的差 END
四. 程序源代码 #include #include #include #define TRUE 1 #define ERROR 0 #define OK 1 #define MAXISIZE 100 #define MAXRC 10 struct Triple { int i,j; //行下标,列下标 int e; //非零元数的值 }; struct TSMatrix { Triple data[MAXISIZE+1]; int rpos[MAXRC+1]; int mu,nu,tu; //矩阵的行数,列数,非零元数 }; int CreateSMatrix(TSMatrix &M) { int i,m,n,f,num[MAXRC+1]; int e; int k; for(i=0;i<=MAXRC;i++) { M.rpos[i]=0; } cout<<"请依次输入矩阵的行数,列数,非零元数:\n"; cin>>M.mu>>M.nu>>M.tu; M.data[0].i=0; for(i=1;i<=M.tu;i++) { do { (1~"<>m>>n>>e; k=0; f=m; cout<<" 输 入 第 "<
if(m<1||m>M.mu||n<1||n>M.nu) { k=1; cout<<"元素的行列数输入错误!\n"; } if(m
"<
Q.tu++; Q.data[Q.tu].i=i; Q.data[Q.tu].j=M.data[j].j; Q.data[Q.tu].e=M.data[j].e; } } if(s==0) { } j++; continue; } else { Q.tu++; Q.data[Q.tu].i=i; Q.data[Q.tu].j=N.data[q].j; Q.data[Q.tu].e=N.data[q].e; q++; continue; } } if(M.data[j].j==N.data[q].j&&jN.data[q].j) { s=0; for(p=M.rpos[i];p
s=1; break; } } if(s==0) { } q++; continue; } else { Q.tu++; Q.data[Q.tu].i=i; Q.data[Q.tu].j=N.data[q].j; Q.data[Q.tu].e=N.data[q].e; Q.tu++; Q.data[Q.tu].i=i; Q.data[Q.tu].j=M.data[j].j; Q.data[Q.tu].e=M.data[j].e; j++; continue; } } if(j==tp1&&q
continue; } if(j
cout<>a; while(a!='3') { switch(a) { case '1':h=AddSMatrix(A,B,C); case '2': if(h==1) {cout<<"两稀疏矩阵的和为:\n"; PrintSMatrix(C); cout<>a; } DestroySMatrix(A); DestroySMatrix(B); DestroySMatrix(C); } 五. 实验数据和结果分析
分享到:
收藏