1
目的
输出压缩储存的稀疏矩阵
问题
想要存入一个数据所在行数时
scanf("%d",&m->(data+i)->row);
无法编译成功
编译tip
error: expected identifier before ‘(’ token|
error: invalid type argument of ‘->’ (have ‘int’)|
2019.10.20
将上述代码改成
scanf("%d",&m->data[i].row);
即可成功编译
猜想:
data在结构体定义的时候定义的是data[10]是个数组,所以后续相关也只能用数组的形式进行呈现?
问题:
时间复杂度太高O(n^3)
#include <stdio.h>
#include <stdlib.h>
typedef struct
{int row,col;
int element;
}el;
typedef struct
{int mu,nu,num;
el data[10];
}list;
memery(list*m)
{int i;
printf("请输入一共有多少个非零元(<10)");
scanf("%d",&m->num);
printf("多少列多少行");
scanf("%d%d",&m->mu,&m->nu);
for(i=0;i<m->num;i++)
{
printf("输入元素所在行");
scanf("%d",&m->data[i].row);
printf("输入元素所在列");
scanf("%d",&m->data[i].col);
printf("输入元素值");
scanf("%d",&m->data[i].element);
}
}
print(list*m)
{int i,j;
int find;
int k;//用于遍历数据表
for(i=0;i<m->mu;i++)
{
for(j=0;j<m->nu;j++)
{ find=0;
for(k=0;k<m->num;k++)
{if(i==m->data[k].row&&j==m->data[k].col)
{
printf("%d ",m->data[k].element);
find=1;
break;
}
}
if(find==0)
printf("0 ");
}
printf("\n");
}
}
int main()
{
list m,n;
printf("压缩存储稀疏矩阵开始");
memery(&m);
print(&m);
return 0;
}
结果图:
稀疏矩阵:参考资源
编译问题:expected declaration or statement at end of input