数组的实现及操作:
#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(" ");
}
#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(" ");
}