资源描述:
《C实现稀疏矩阵的加法和减法计算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#definemax10000typedefstruct{introw;intcol;intele;}Triple;typedefstruct{Tripledata[max+1];intm;intn;intlen;}TSMatrix;//函数表voidPrint(TSMatrix*a,TSMatrix*b,TSMatrix*c);voidChoose(intchoice,TSMatrix*a,TSMatrix*b,TSMatrix*c);voidEnterIn
2、(TSMatrix*x);voidPlus(TSMatrix*a,TSMatrix*b,TSMatrix*c);voidMinus(TSMatrix*a,TSMatrix*b,TSMatrix*c);voidPrintX(TSMatrix*x);//主函数intmain(){TSMatrixa,b,c;//a,b,c三个表system("colora");Print(&a,&b,&c);while(true){printf("Pressentertocontinue.........");getchar();getchar();
3、system("cls");Print(&a,&b,&c);}return0;}voidPrint(TSMatrix*a,TSMatrix*b,TSMatrix*c){intchoice;printf("使用说明:本程序可实现稀疏矩阵的加法和减法.");printf("---------------------");printf("1->输入稀疏矩阵A.");printf("2->输入稀疏矩阵B.");printf("3->A+B.");printf("4->A-B.");printf("5->按其它任意
4、键退出.");printf("---------------------");printf("请选择你要的操作:");scanf("%d",&choice);Choose(choice,a,b,c);}voidChoose(intchoice,TSMatrix*a,TSMatrix*b,TSMatrix*c){switch(choice){case1:EnterIn(a);printf("矩阵A:");PrintX(a);break;case2:EnterIn(b);printf("矩阵B:");PrintX(b
5、);break;case3:Plus(a,b,c);printf("矩阵A:");PrintX(a);printf("矩阵B:");PrintX(b);printf("矩阵C=A+B:");PrintX(c);break;case4:Minus(a,b,c);printf("矩阵A:");PrintX(a);printf("矩阵B:");PrintX(b);printf("矩阵C=A-B:");PrintX(c);break;default:exit(0);}}voidEnterIn(TSMatrix*x
6、){intmark=1;inti;intj;intelement;x->len=0;printf("请输入稀疏矩阵的行数和列数:");scanf("%d%d",&x->m,&x->n);printf("请输入矩阵:");for(i=1;i<=x->m;i++){for(j=1;j<=x->n;j++){scanf("%d",&element);if(element!=0){x->len++;x->data[mark].ele=element;x->data[mark].row=i;x->data[mark].col=j;ma
7、rk++;}}}printf("输入矩阵成功!");}voidPlus(TSMatrix*a,TSMatrix*b,TSMatrix*c){c->m=a->m;c->n=a->n;inti;intj;intk;c->len=0;for(i=1,j=1,k=1;i<=a->len
8、
9、j<=b->len;k++){if(a->data[i].rowdata[j].row){c->data[k].col=a->data[i].col;c->data[k].row=a->data[i].row;c->data[k].ele=a-
10、>data[i].ele;i++;c->len++;}elseif(a->data[i].row==b->data[j].row){if(a->data[i].col==b->data[j].col){c->data[k].col=a->data[i].col;