矩阵转置

来源:互联网 发布:淘宝上买的apple app 编辑:程序博客网 时间:2024/05/17 09:11
#include <iostream>using namespace std;const int MAXSIZE=12500;typedef struct{int i,j;int e;}Triple; typedef struct{Triple date[MAXSIZE+1];int mu,nu,tu; }TSMatrix; void List ();void creat(TSMatrix &M);void type(TSMatrix M);void Transpose(TSMatrix M,TSMatrix &T);void quickTranspose (TSMatrix M,TSMatrix &T);void destroy (TSMatrix &M);int main(){int number;TSMatrix M;TSMatrix T;M.tu=0;List();while(1){cout<<"请输入可执行的操作:\n";cin>>number;switch(number){case 1:creat(M);break;case 2:destroy(M);break;case 3:type(M);break;case 4:Transpose(M,T);break;case 5:quickTranspose(M,T);break;case 6:break;default:cout<<"请输入有效的操作!!!\n"<<endl;}if(number==6)break;}return 0;}void List (){   cout<<"******************************"<<endl;   cout<<"** 1.创建矩阵               **"<<endl;   cout<<"** 2.销毁矩阵               **"<<endl;   cout<<"** 3.输出矩阵M              **"<<endl;   cout<<"** 4.转置矩阵               **"<<endl;   cout<<"** 5.快速转置矩阵           **"<<endl;   cout<<"** 6.退出                   **"<<endl;   cout<<"******************************"<<endl;}void creat(TSMatrix &M){cout<<"请输入行数,列数,非零元个数:";cin>>M.mu>>M.nu>>M.tu;for(int i=1;i<=M.tu;i++)cin>>M.date[i].i>>M.date[i].j>>M.date[i].e;cout<<"矩阵创建成功!!\n";}void type(TSMatrix M){if(M.tu){cout<<"矩阵如下:\n";int array[M.mu+1][M.nu+1]={0};for(int i=1;i<=M.tu;i++)array[M.date[i].i][M.date[i].j]=M.date[i].e;for(int i=1;i<=M.mu;i++){for(int j=1;j<=M.nu;j++)cout<<array[i][j]<<" ";cout<<endl;} }else  cout<<"请先进行初始化!\n";}void Transpose(TSMatrix M,TSMatrix &T){if(M.tu){T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;if(T.tu){int q=1;for(int i=1;i<=M.nu;i++)for(int j=1;j<=M.tu;j++)if(M.date[j].j==i){T.date[q].i=M.date[j].j;T.date[q].j=M.date[j].i;T.date[q].e=M.date[j].e;q++;}cout<<"转置成功!!\n";type(T);}elsecout<<"转置失败!\n";}else  cout<<"请先进行初始化!\n";}   void quickTranspose (TSMatrix M,TSMatrix &T) { if(M.tu) {  T.mu=M.nu;T.nu=M.mu;T.tu=M.tu; int num[1000]; int cpot[1000]; if(T.tu){int col,i,j,k;for(col=1;col<=M.nu;col++)num[col]=0;for(i=1;i<=M.tu;i++)++num[M.date[i].j];cpot[1]=1;for(col=2;col<=M.nu;col++)cpot[col]=cpot[col-1]+num[col-1];for(j=1;j<=M.tu;j++){col=M.date[j].j; k=cpot[col];T.date[k].i=M.date[j].j;T.date[k].j=M.date[j].i;T.date[k].e=M.date[j].e;++cpot[col];}cout<<"转置成功!!\n";type(T);}elsecout<<"转置失败!\n";}else  cout<<"请先进行初始化!\n"; } void destroy (TSMatrix &M) { if(M.tu) { M.tu=0; cout<<"销毁成功!\n"; } else  cout<<"请先进行初始化!\n"; }

0 0
原创粉丝点击