好文档 - 专业文书写作范文服务资料分享网站

实验五_数组汇编

天下 分享 时间: 加入收藏 我要投稿 点赞

实验5:数组

一、实验目的

深切研究数组的存储表示和实现技术,着重掌握对稀疏矩阵的表示方式及其运算的实现。

二、问题描述

稀疏矩阵是指那些多数元素为零的矩阵。利用‘稀疏’特点进行存储和计算能够大大节省存储空间,提高效率。通过对稀疏矩阵的存储表示,实现矩阵的大体操作。

三、实验要求

1、要求矩阵的输入形式采用三元组表示,以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵。

2、设计矩阵的逆置算法,实现矩阵的逆置。 3、实现两个稀疏矩阵的相加、相减和相乘等运算。 4、要求运算结果的矩阵则以通常的数组形式出现。

四、实验环境

PC微机

DOS操作系统或 Windows 操作系统

Turbo C 程序集成环境或 Visual C++ 程序集成环境

五、实验步骤

实验程序:

1、 #include 2、 #include 3、 using namespace std; 4、 const int MAXSIZE=100; 5、 const int MAXROW=10; 6、 typedef struct { 7、 int i,j; 8、 int e; 9、 }Triple; 10、 typedef struct {

11、 Triple data[MAXSIZE+1]; 12、 int mu,nu,tu; 13、 }TSMatrix; 14、 typedef struct {

15、 Triple data[MAXSIZE+2]; 16、 int rpos[MAXROW+1]; 17、 int mu,nu,tu; 18、 }RLSMatrix; 19、 template

20、

bool InPutTSMatrix(P & T,int

y){ 21、 cout<<\输入矩阵的行,列和非零元素个数:\

22、 cin>>>>>>;

23、 cout<<\请输出非零元素的位置和值:\

24、 int k=1; 25、 for(;k<=;k++)

26、 cin>>[k].i>>[k].j>>[k].e; 27、

28、 return true; 29、 }

30、 template 31、 bool OutPutSMatrix(P T){ 32、 int m,n,k=1; 33、 for(m=0;m<;m++){ 34、 for(n=0;n<;n++){

35、 if([k].i-1)==m&&[k].j-1)==n){ 36、 (4);

37、

cout<<[k++].e;} 38、 else{

39、 (4); cout<<\ 40、 }

41、 cout<

45、 bool TransposeSMatrix( ){ 46、 TSMatrix M,T; ]; 47、 cpot[1]=1; 48、

for(int

i=2;i<=;i++)

cpot[i]=cpot[i-1]+num[i-1]; ;

q=cpot[col]; 49、 [q].i=col; [q].j=[p].i; 50、 [q].e=[p].e; ++cpot[col]; 51、 } 52、 }

53、 cout<<\输入矩阵的转置矩阵为\

54、 OutPutSMatrix(T); 55、 return true; 56、 } 57、

58、 bool Count(RLSMatrix &T) 59、 {

60、 int num[MAXROW+1]; 61、 for(int

col=1;col<=;col++)

num[col]=0;

62、 for(col=1;col<=;col++) ++num[[col].i];

63、 [1]=1; 64、 for(int i=2;i<=;i++)

[i]=[i-1]+num[i-1];

65、 return true; 66、 }

67、 bool MultSMatrix ( ){ 68、 RLSMatrix M,N,Q; 69、 InPutTSMatrix(M,1); 70、 InPutTSMatrix(N,1); 71、

Count(M); Count(N);

72、 if!= return false; 73、 =; =; =0; ;

74、 if(brow< t=[brow+1]; 75、 else t=+1;

76、 for(q=[brow];q

78、 ctemp[ccol] += [p].e*[q].e; 79、 } 80、 }

81、 for(ccol=1;ccol<=;ccol++) 82、 if(ctemp[ccol]){

83、 if(++>MAXSIZE) return false; 84、 [].e=ctemp[ccol]; 85、 [].i=arow; 86、 [].j=ccol; 87、 } 88、 } 89、 }

90、 OutPutSMatrix(Q); 91、 return true; 92、 }

93、 typedef struct OLNode{ 94、 int i,j; 95、 int e;

96、 struct OLNode *right,*down; 97、 }OLNode,*OLink; 98、 typedef struct{ 99、 OLink *rhead,*chead; 100、 int mu,nu,tu; 101、 }CrossList; 102、 bool CreateSMatrix_OL(CrossList & M){

103、 int x,y,m;

104、 cout<<\请输入矩阵的行,列,及非零元素个数\

105、 cin>>>>>>;

106、 if(!=(OLink*)malloc(+1)*sizeof(OLink)))) exit(0); 107、

if(!=(OLink*)malloc(+1)*sizeof(

OLink)))) exit(0);

108、 for(x=0;x<=;x++) 109、 [x]=NULL; / 110、 for(x=0;x<=;x++) 111、 [x]=NULL;

112、 cout<<\请按三元组的格式输入数组:\

113、 for(int i=1;i<=;i++){ 114、 cin>>x>>y>>m; 115、 OLink p,q;

116、 if(!(p=(OLink)malloc(sizeof(OLNode)))) exit(0);

117、 p->i=x; p->j=y; p->e=m; 118、 if[x]==NULL||[x]->j>y){ 119、 p->right=[x]; [x]=p; 120、 } 121、 else{

122、 for(q=[x];(q->right)&&(q->right->jright); 123、 p->right=q->right; q->right=p; // 完成行插入

124、 }

125、 if[y]==NULL||[y]->i>x){ 126、 p->down=[y]; [y]=p; 127、 } 128、 else{

129、 for(q=[y];(q->down)&&(q->down->idown); 130、 p->down=q->down; q->down=p; // 完成列插入

131、 132、 } 133、 } 134、 return true; 135、 } 136、 bool

OutPutSMatrix_OL(CrossList T){

137、 for(int i=1;i<=;i++){ 138、 OLink p=[i]; 139、 for(int j=1;j<=;j++){ 140、

if((p)&&(j==p->j)){

实验五_数组汇编

实验5:数组一、实验目的深切研究数组的存储表示和实现技术,着重掌握对稀疏矩阵的表示方式及其运算的实现。二、问题描述稀疏矩阵是指那些多数元素为零的矩阵。利用‘稀疏’特点进行存储和计算能够大大节省存储空间,提高效率。通过对稀疏矩阵的存储表示,实现矩阵的大体操作。三、实验要求1、要求矩阵的输入形式采用三
推荐度:
点击下载文档文档为doc格式
7zacb6r8zj3ef8l940oa3cwgi893hn006gw
领取福利

微信扫码领取福利

微信扫码分享