2个回答
展开全部
# include <stdio.h>
typedef struct a
{
int **arc;
int vexnum;
}table;
void createbiao(table *a)//建立邻接表
void tableplus(table *a,table *b)
{
int i,j
if(a->vexnum!=b->vexnum)
{printf("不能做加法!\n");exit(0);}
for(i=0;i<a->vexnum;i++)
for(j=0;j<a->vexnum;j++)
a->arc[i][j]+=b->arc[i][j];
}
void tablejian(table *a,table *b)
{
int i,j
if(a->vexnum!=b->vexnum)
{printf("不能做减法!\n");exit(0);}
for(i=0;i<a->vexnum;i++)
for(j=0;j<a->vexnum;j++)
a->arc[i][j]-=b->arc[i][j];
}
void tableplus(table *a,table *b)
{
int i,j,k,usum=0;
if(a->vexnum!=b->vexnum)
{printf("不能做乘法!\n");exit(0);}
for(i=0;i<a->vexnum;i++)
{
for(k=0;k<a->vexnum;k++)
{
sum=0
for(j=0;j<a->vexnum;j++)
sum=arc->arc[i][j]*b->arc[j][k];
a->arc[i][k]=sum;
}
}
}
有问题追问,写写不容易
typedef struct a
{
int **arc;
int vexnum;
}table;
void createbiao(table *a)//建立邻接表
void tableplus(table *a,table *b)
{
int i,j
if(a->vexnum!=b->vexnum)
{printf("不能做加法!\n");exit(0);}
for(i=0;i<a->vexnum;i++)
for(j=0;j<a->vexnum;j++)
a->arc[i][j]+=b->arc[i][j];
}
void tablejian(table *a,table *b)
{
int i,j
if(a->vexnum!=b->vexnum)
{printf("不能做减法!\n");exit(0);}
for(i=0;i<a->vexnum;i++)
for(j=0;j<a->vexnum;j++)
a->arc[i][j]-=b->arc[i][j];
}
void tableplus(table *a,table *b)
{
int i,j,k,usum=0;
if(a->vexnum!=b->vexnum)
{printf("不能做乘法!\n");exit(0);}
for(i=0;i<a->vexnum;i++)
{
for(k=0;k<a->vexnum;k++)
{
sum=0
for(j=0;j<a->vexnum;j++)
sum=arc->arc[i][j]*b->arc[j][k];
a->arc[i][k]=sum;
}
}
}
有问题追问,写写不容易
追问
键盘和文件怎么录入
追答
void main()
{
int i,j,k,m,n,o,q
table *a,*b;
FILE *fp;
char ch1,ch2,ch3;
a=(table *)malloc(sizeof(table));
b=(table *)malloc(sizeof(table));
printf("输入a表元素个数\n");
scanf("%d",&a->veexnum);
printf("输入b表元素个数\n");
scanf("%d",&a->vexnum);
a->arc=(char *)malloc(sizeof(char)*a->vexnum);
for(i=0;ivexnum;i++)
a->arc[i]=(char *)malloc(sizeof(char)*a->vexnum);
b->arc=(char *)malloc(sizeof(char)*b->vexnum);
for(i=0;ivexnum;i++)
b->arc[i]=(char *)malloc(sizeof(char)*a->vexnum);
printf("选择输入方式(0:键盘输入,1:文件输入)\n")
scanf("%d",&k);
if(k==0)
{
p=1;
printf("现输入A表\n");
while(p==1)
{
printf("输入元素的行下表、列下标、值")
scanf("%d,%d,%d",&m,&n,&o);
a->arc[m][n]=o;
printf("继续输入按1\n);
if(q!=1)
break;
}
printf("现输入B表\n");
p=1;
while(p==1)
{
printf("输入元素的行下表、列下标、值")
scanf("%d,%d,%d",&m,&n,&o);
a->arc[m][n]=o;
printf("继续输入按1\n);
if(q!=1)
break;
}
}
else
{
fp=("文件名","r");A表
if((fp==NULL)
{
printf("nerror on open c:hzk16 file!");
getch();
exit(1);
}
ch1=fgetc(fp);
ch2=fgetc(fp);
ch3=fgetc(fp);
while(ch1!=EOF&&ch2!=EOF&&ch3!=EOF)
{
a->arc[ch1-48][ch2-48]=(ch3-48);
ch1=fgetc(fp);
ch2=fgetc(fp);
ch3=fgetc(fp);
}
close(fp);
fp=("文件名","r");//B表
if((fp==NULL)
{
printf("nerror on open c:hzk16 file!");
getch();
exit(1);
}
ch1=fgetc(fp);
ch2=fgetc(fp);
ch3=fgetc(fp);
while(ch1!=EOF&&ch2!=EOF&&ch3!=EOF)
{
b->arc[ch1-48][ch2-48]=(ch3-48);
ch1=fgetc(fp);
ch2=fgetc(fp);
ch3=fgetc(fp);
}
close(fp);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询