数据结构 矩阵的转置

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
scanf("%d",&M.mu);
if(M.mu>0)
{
break;
}
if(M.mu<=0)
{
printf("行不能为0\n");
continue;
}
}
while(1)
{
printf("请输入列:");
scanf("%d",&M.nu);
if(M.nu>0)
{
break;
}
if(M.nu<=0)
{
{
printf("输入错误2!\n");
w--;
break;
}
else if(M.data[m].i==M.data[n].i&&M.data[m].j<M.data[n].j)
{
printf("输入错误3!\n");
w--;
break;
}
else if(M.data[m].i==M.data[n].i&&M.data[m].j==M.data[n].j)
#include<stdio.h>
#include <conio.h>
#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("请输入行:");
T.data[q].j= M.data[p]. i;
T.data[q].e= M.data[p]. e;
++cpot[col] ;
}
}
printf("矩阵快速转置成功!\n");
printf("转置后的");
ShowSMatrix(T);
return OK;
}
int main()
{
printf("******************************\n");
if(M.data[w].i<=0||M.data[w].j<=0||M.data[w].i>M.mu||M.data[w].j>M.nu)
{
printf("输入错误1!\n");
w--;
}
for(m=1;m<=w;m++)
{
for(n=0;n<m;n++)
{
if(M.data[m].i<M.data[n].i)
{
printf("输入重复!\n");
w--;
break;
}
}
}
}
return OK;
}
Status ShowSMatrix(TSMatrix M)
{
int i,j,t=1;
printf("矩阵为:\n");
for(i=1;i<=M.mu;i++)
{
for(j=1;j<=M.nu;j++)
{
if(M.data[t].i==i&&M.data[t].j==j)
if(T.tu)
{
q=1;
for (col=1;col<=M.nu;col++)
{
for(p=1;p<=M.tu;p++)
{Biblioteka Baidu
if(M.data[p].j==col)
{
T.data[q].i=M.data[p].j; T.data[q].j=M.data[p].i;
T.data[q].e=M.data[p].e; ++q;
{
printf("%d\t",M.data[t].e);
t++;
}
else printf("0\t");
}
printf("\n");
}
return OK;
}
Status TransposeSMatrix(TSMatrix M,TSMatrix &T)
{
T.mu=M.nu;T.nu=M.mu;T.tu=M.tu; int col; int p,q;
printf("****** 1.创建矩阵********\n");
printf("****** 2.销毁矩阵********\n");
printf("****** 3.输出矩阵********\n");
printf("****** 4.转置矩阵********\n");
printf("****** 5.快速转置矩阵********\n");
cpot[1] =1;
for(col = 2;col <=M.nu; ++col) cpot[col]=cpot[col-1]+num [col-1 ] ;
for( p =1; p <=M.tu ; ++p )
{
col =M.data[p].j; q=cpot [col];
T.data[q].i = M.data[p]. j;
}
}
}
}
printf("矩阵转置成功!\n");
printf("转置后的");
ShowSMatrix(T);
return OK;
}
Status DestorySMatrix(TSMatrix &M)
{
M.mu=0;
M.nu=0;
M.tu=0;
return OK;
}
Status FastTransposeSMatrix(TSMatrix M, TSMatrix &T)
printf("****** 6.转置矩阵对比********\n");
printf("****** 7.输入一个负数退出*****\n");
printf("******************************\n");
{ int num[100];
int cpot[100];
int col,i,p,q;
T.mu = M.nu ;T .nu = M.mu ; T.tu= M.tu ;
if ( T.tu ) {
for(col = 1; col <=M.nu; ++col) num[col] =0;
for( i = 1; i <=M.tu; ++i) {col =M.data[ i ] .j ; ++num [col] ;}
printf("列不能为0\n");
continue;
}
}
printf("请输入非零元素:");
scanf("%d",&M.tu);
for(w=1;w<=M.tu;w++)
{
printf("请输入元素所在行,列,元素值:\n");
scanf("%d %d %d",&M.data[w].i,&M.data[w].j,&M.data[w].e);
相关文档
最新文档