用邻接表表示稀疏矩阵并实现矩阵的加法减法乘法运算!求C语言代码啊!

要求输入方式可选,文件输入和键盘输入两种。... 要求输入方式可选,文件输入和键盘输入两种。 展开
 我来答
cheerj6
2011-12-05 · TA获得超过116个赞
知道答主
回答量:83
采纳率:0%
帮助的人:62.8万
展开全部
# 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;
}
}
}

有问题追问,写写不容易
追问
键盘和文件怎么录入
追答
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);
}
}
boximomo
2011-12-05 · TA获得超过115个赞
知道答主
回答量:254
采纳率:0%
帮助的人:111万
展开全部
打酱油,有问题追问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式