include<stdio.h>/*2009.09.20晚于白鹿原*/ #include <malloc.h>//把矩阵A转置到B所指向的矩阵中// typedef int ElemType; #define MAXSIZE 1000 typedef struct { int row,col; ElemType e; }Triple; typedef struct { Triple data[MAXSIZE+1];//非0元素的三元组表// int m,n,len;/*矩形的行数、列数、非0元素的个数*/ }TSMatrix; void TransposeTSMatrix(TSMatrix A,TSMatrix *B)//把矩阵A转置到B所指向的矩阵中// { int i,j,k; B->m=A.n; B->n=A.m; B->len=A.len; if(B->len>0) { j=1; for(k=1;k<=A.n;k++) for(i=1;i<=A.len;i++) if(A.data[i].col==k) { B->data[j].row=A.data[i].col; B->data[j].col=A.data[i].row; B->data[j].e=A.data[i].e; j++; } } } void main() { int i; int a[8]={1,1,3,3,4,5,6,6}; int b[8]={2,3,1,6,3,2,1,4}; int c[8]={12,9,-3,14,24,18,15,-7}; TSMatrix A; TSMatrix *B; A.n=8; A.m=1; A.len=8; B=(TSMatrix *)malloc(sizeof(TSMatrix)); for(i=0;i<8;i++) { A.data[i+1].row=a[i]; A.data[i+1].col=b[i]; A.data[i+1].e=c[i]; } TransposeTSMatrix(A,B); printf("The row:"); for(i=1;i<=8;i++) { printf("%3d",B->data[i].row); } printf("/n"); printf("The col:"); for(i=1;i<=8;i++) { printf("%3d",B->data[i].col); } printf("/n"); printf("The value:"); for(i=1;i<=8;i++) { printf("%3d",B->data[i].e); } printf("/n"); }