数组的实现及操作: #define MAXSIZE 100 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int ElemType;typedef struct ... { int i,j; ElemType e;} Triple;typedef struct ... { Triple data[MAXSIZE]; int mu,nu,tu;} TSMatrix; // 利用二维数据创建一个三元组顺序表 int CreatMatrix( int array[][ 3 ],TSMatrix * m) ... { int q=0; m->mu=3; m->nu=3; for(int row=0;row<3;row++) ...{ for(int col=0;col<3;col++) ...{ if(array[row][col]) ...{ m->data[q].e=array[row][col]; m->data[q].i=row; m->data[q].j=col; q++; } } } m->tu=q; return OK;} /**/ /*int CreatMatrix(int *array,int rownum,int colnum,TSMatrix *m){ int q=0; m->mu=rownum; m->nu=colnum; for(int row=0;row<rownum;row++) { for(int col=0;col<colnum;col++) { if(*array!=0) { m->data[q].e=*array; m->data[q].i=row; m->data[q].j=col; q++; } array++; } } m->tu=q; return OK;}*/ // 转置 int TransposeMatrix(TSMatrix m,TSMatrix & t) ... { int q=0; t.mu=m.nu; t.nu=m.mu; t.tu=m.tu; if(t.tu) ...{ for(int col=0;col<m.nu;col++) for(q=0;q<m.tu;q++) if(m.data[q].j==col) ...{ t.data[q].i=m.data[q].j; t.data[q].j=m.data[q].i; t.data[q].e=m.data[q].e; ++q; } } return OK;} // 输出元素 void PrintMatrix(TSMatrix m) ... { for(int c=0;c<m.tu;c++) ...{ printf("%d,%d is :%d ",m.data[c].i+1,m.data[c].j+1,m.data[c].e); }} int main( int agrc, char * argv[]) ... { int array[3][3]=...{...{0,0,1},...{0,2,3},...{4,0,0}}; TSMatrix m,n; CreatMatrix(array,&m);// CreatMatrix(*array,3,3,&m);// CreatMatrix(array[0],3,3,&m); TransposeMatrix(m,n); PrintMatrix(m); printf("after transport .... "); PrintMatrix(n); printf(" ");}