为何会出现error C2198: 'create' : too few actual parameters呢?求大神帮忙看一下
已知稀疏矩阵用三元组表示,编写C=A*B的算法。#include<stdio.h>
#include<stdlib.h>
#define smax 30
typedef int datatype;
typedef struct {
int i,j; //行标、列标
datatype e; //非零元素
}node;
typedef struct
{
int r,c,n; //行数r、列数c、非零元素个数n
node data[smax]; //非零三元组表
int numr[smax]; //每行非零元素的个数
}spmatrix;
//创建三元组
spmatrix *create(spmatrix *T)
{
int i,j,element;
printf("请输入矩阵的行数:\n");
scanf("%d",&T->r);
printf("请输入矩阵的列数:\n");
scanf("%d",&T->c);
printf("请输入矩阵元素,按行输入:\n");
T->n=0;
for(i=0;i<T->r;i++)
{
T->numr[i]=T->n;
for(j=0;j<T->c;j++)
{
scanf("%d",&element);
if(element)
{
T->data[T->n].i=i;
T->data[T->n].j=j;
T->data[T->n].e=element;
T->n++;
}
}
}
}
//输出结果矩阵
void print(spmatrix *T)
{
int i,j,k,e;
for(i=0;i<T->r;i++)
{
for(j=0;j<T->c;j++)
{
e=0;
for(k=0;k<T->n;k++)
{
if(i==T->data[k].i&&j==T->data[k].j)
{
e=T->data[k].e;break;
}
printf("%4d",e);
}
}
printf("\n");
}
}
//两个矩阵相乘
void mul(spmatrix *T1,spmatrix *T2,spmatrix *T)
{
int p,arow,brow,ccol,ctemp[smax],q,tp,t,k;
T->r=T1->r; T->c=T2->c; T->n=0; //初始化
if((T1->n)*(T2->n)!=0)
{
for(arow=0;arow<T1->r;++arow) //处理T1的每一行
{
for(k=0;k<T->c;k++) //当前各行累加器清零
ctemp[k]=0;
T->numr[arow]=T->n;
if(arow<T1->r-1)
tp=T1->numr[arow+1];
else tp=T1->n;
for(p=T1->numr[arow]; p<tp;++p) //对当前行中每个非零元素
{
brow=T1->data[p].j; //找到对应元在T1中的行号
if(brow<T2->r-1)
t=T2->numr[brow+1];
else t=T2->n;
for(q=T2->numr[brow];q<t;++q)
{
ccol=T2->data[q].j; //乘积在T中的列号
ctemp[ccol]+=T1->data[p].e*T2->data[q].e;
}
}
for (ccol=0;ccol<T->c;++ccol) //压缩存储该行非零元素
{
if(ctemp[ccol]!=0)
{
T->data[T->n].i=arow;
T->data[T->n].j=ccol;
T->data[T->n].e=ctemp[ccol];
T->n++;
}
}
}
}
}
void main()
{
spmatrix *A,*B,*C;
A=create();
print(A);
B=create();
print(B);
mul(A,B,C);
print(C);
}