数据结构 矩阵的转置

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<>

#include <>

#define MAXSIZE 12500

#define OK 1

#define ERROR 0

#define OVERFLOW -2

typedef int Status;

typedef int ElemType;

typedef struct

{

int i,j;

int e;

}Triple;

typedef struct

{

Triple data[MAXSIZE+1];

int mu,nu,tu;

}TSMatrix;

Status CreateSMatrix(TSMatrix &M) {

int w,m,n;

while(1)

{

printf("请输入行:");

scanf("%d",&;

if>0)

{

break;

}

if<=0)

{

printf("行不能为0\n");

continue;

}

}

while(1)

{

printf("请输入列:");

scanf("%d",&;

if>0)

{

break;

}

if<=0)

{

printf("列不能为0\n");

continue;

}

}

printf("请输入非零元素:"); scanf("%d",&;

for(w=1;w<=;w++)

{

printf("请输入元素所在行,列,元素值:\n");

scanf("%d %d %d",&[w].i,&[w].j,&[w].e);

if[w].i<=0||[w].j<=0||[w].i>||[w].j>

{

printf("输入错误1!\n");

w--;

}

for(m=1;m<=w;m++)

{

for(n=0;n

{

if[m].i<[n].i)

{

printf("输入错误2!\n");

w--;

break;

}

else if[m].i==[n].i&&[m].j<[n].j)

{

printf("输入错误3!\n");

w--;

break;

}

else if[m].i==[n].i&&[m].j==[n].j)

{

printf("输入重复!\n");

w--;

break;

}

}

}

}

return OK;

}

Status ShowSMatrix(TSMatrix M)

{

int i,j,t=1;

printf("矩阵为:\n");

for(i=1;i<=;i++)

{

for(j=1;j<=;j++)

{

if[t].i==i&&[t].j==j)

{

printf("%d\t",[t].e);

t++;

}

else printf("0\t");

}

printf("\n");

}

return OK;

}

Status TransposeSMatrix(TSMatrix M,TSMatrix &T) {

=;=;=; int col; int p,q;

if

{

q=1;

for (col=1;col<=;col++)

{

for(p=1;p<=;p++)

{

if[p].j==col)

{

[q].i=[p].j; [q].j=[p].i;

[q].e=[p].e; ++q;

}

}

}

}

printf("矩阵转置成功!\n");

printf("转置后的");

ShowSMatrix(T);

return OK;

}

Status DestorySMatrix(TSMatrix &M)

{

=0;

=0;

return OK;

}

Status FastTransposeSMatrix(TSMatrix M, TSMatrix &T)

{ int num[100];

int cpot[100];

int col,i,p,q;

= ;T .nu = ; = ;

if ( ) {

for(col = 1; col <=; ++col) num[col] =0;

for( i = 1; i <=; ++i) {col =[ i ] .j ; ++num [col] ;}

cpot[1] =1;

for(col = 2; col <=; ++col) cpot[col]=cpot[col-1]+num [col-1 ] ;

for( p =1; p <= ; ++p )

{

col =[p].j; q=cpot [col];

[q].i = [p]. j;

[q].j = [p]. i;

[q].e= [p]. e;

++cpot[col] ;

}

}

printf("矩阵快速转置成功!\n");

printf("转置后的");

ShowSMatrix(T);

return OK;

}

相关文档
最新文档