`
hellojyj
  • 浏览: 58847 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

矩阵的快速转置

阅读更多
#include"stdio.h"
#include"string.h"
struct Maxtrix{
    int row;
    int col;
    int data;
};
const int MAXN = 100;
int j;
main(){
    struct Maxtrix mtr[MAXN];
    struct Maxtrix newMtr[MAXN];
    memset(newMtr,0,sizeof(newMtr));
    int count[MAXN];
    memset(count,0,sizeof(count));
    int pos[MAXN];
    memset(pos,0,sizeof(pos));
    int i=1;
    int maxCol=0;
    printf("%s\n","输入原来矩阵(格式:row colum data)输入0 0 0表示结束");
    while(scanf("%d%d%d",&mtr[i].row,&mtr[i].col,&mtr[i].data)!=EOF&&i<100){
        if(mtr[i].row==0)break;
        maxCol=(maxCol<mtr[i].col)?mtr[i].col:maxCol;
         //统计各列数据个数
        count[mtr[i].col]++;
        i++;
    }
    for(j=1;j<=maxCol;j++){
        if(j==1){
            pos[j]=1;
        }else{
            pos[j]=pos[j-1]+count[j-1];
        }

    }
    int post;
    //快速转置
    for(j=1;j<i;j++){
        post = pos[mtr[j].col];
        newMtr[post].row = mtr[j].col;
        newMtr[post].col = mtr[j].row;
        newMtr[post].data = mtr[j].data;
        pos[mtr[j].col]++;
    }
    //打印转置后的矩阵
    printf("%s\n","转置后的矩阵为:");
    for(j=1;j<i;j++){
        printf("%d %d %d\n",newMtr[j].row,newMtr[j].col,newMtr[j].data);
    }
    return 0;
}

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics