c区高手多啊,看看数据结构中的三维数组的建立的错误,也可看看我的编码风格,有什么不好的请大家指出
代码:错误在红色的部分,可是我不知道怎么修改//table.h 自定义头文件(定义结构体)
#define MAXSIZE 1000
typedef struct
{
int i;
int j;
int e;
}tupletype;
typedef struct
{
int rownum;
int colnum;
int nznum;
tupletype data[MAXSIZE];
}table;
//tablelib.h 自定义头文件(对函数的定义)
#define M1 10
#define N1 10
void creat(table *T,int A[][N1])
{ int i,j;
T->rownum=M1;
T->colnum=N1;
T->nznum=0;
for(i=0;i<M1;i++)
for(j=0;j<N1;j++)
if(A[i][j]!=0)
{
T->data[T->nznum].i=i;
T->data[T->nznum].j=j;
T->data[T->nznum].e=A[i][j];
T->nznum++;
}
}
int assign(table *T, int *e,int r,int c)
{
int k=0;
if(r>=T->rownum||c>T->colnum)
return 0;
while(k<T->nznum&&r>T->data[k].i)
k++;
while(k<T->nznum&&r>T->data[k].j)
k++;
if(T->data[k].i==r&&T->data[k].j==c)
{
*e=T->data[k].e;
return 1;
}
else
return 0;
}
int print(table *T)
{
int i,j,k,e;
for(i=0;i<T->rownum;i++)
{
for(j=0;j<T->colnum;i++)
{
e=0;
for(k=0;k<T->nznum;k++)
if(i==T->data[k].i&&j==T->data[k].j)
{
e=T->data[k].e;
break;
}
printf("%d",e);
}
printf("\n");
}
return 1;
}
//table.c 主函数
#include<stdio.h>
#include"table.h"
#include"tablelib.h"
int
main(void)
{
table *T,t;
int A[M1][N1];
int m,n;
int i=0,j=0;
int e;
T=&t;
for(m=0;m<M1;m++)
for(n=0;n<N1;n++)
A[m][n]=0;
m=0;
n=0;
while(m<10&&n<10)
{
printf("Input the position array you want to change:\n");
scanf("%d %d",&m,&n);
printf("Input the elem data :\n");
scanf("%d",&e);
A[m][n]=e;
}
creat(T,&A[M1][N1]); 编译器认为我的第二个参数有问题
printf("U can assign the data,please input the position");
scanf("%d %d",&i,&j);
assign(T,&e,i,j);
printf("Now ,the data is :\n");
print(T);
}