数据结构c语言矩阵相加,用三元组做,高手帮忙改一下
#include<stdio.h>#definemaxsize12500typedefstruct{inti,j;inte;}triple;typedefstruct{t...
#include<stdio.h> #define maxsize 12500 typedef struct { int i,j; int e; }triple; typedef struct { triple data[maxsize+1]; int mu,nu,tu; }tsmatrix; status createsmatrix(tsmatrix M); status printfsmatrix(tsmatrix M); status addsmatrix(tsmatrix A,tsmatrix B,tsmatrix C); void main() { tsmatrix A,B,C; printf("创建矩阵A:"); createsmatrix(A); printfsmatrix(A); printf("创建矩阵B:"); createsmatrix(B); printfsmatrix(B); printf("和矩阵C:"); prinffsmatrix(C); } status createsmatrix(tsmatrix M); { int i; triple T; printf("行数,列数,非零元素个数:"); scanf("%d,%d,%d",M.mu,M.nu,M.tu); M.data[0].i=0; for(i=1,i<=M.tu,i++) { printf("按顺序输入行,列,非零元素:"); scanf("%d,%d,%d",T.i,T.j,T.e); M.data[i]=T; } } status printfsmatrix(tsmatrix M) { int i,j,k=0; triple *p=M.data+1 for(i=1,i<=M.mu;i++) { if(k<=M.tu&&p->i==i&&p->j==j) { printf("%3d",(p++)->e); k++; } else printf("%3d",0); printf("\n"); } } status addsmatrix(tsmatrix A,tsmatrix B,tsmatrix C) { int a=1,b=1,q=0; if(A.mu!=B.mu||A.nu!=B.nu) return 0; C.mu=A.mu; C.nu=A.nu; C.tu=A.tu; while(a<=A.tu&&b<=B.tu) switch { case A.data[a].i<B.data[b].i:C.data[++q]=A.data[a++]; break; case A.data[a].i>B.data[b].i:C.data[++q]=B.data[a++]; break; case A.data[a].i=B.data[b].i: switch { case A.data[a].j<B.data[b].j:C.data[++q]=A.data[a++]; break; case A.data[a].j>B.data[b].i:C.data[++q]=B.data[a++]; break; case A.data[a].i=B.data[b].i: C.data[++q]=A.data[a++]; C.data[q]+=B.data[b++]; break; } break; } while(a<=A.tu) C.data[++q]=A.data[a++]; while(b<=B.tu) C.data[++q]=B.data[b++]; return 1; }
展开
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询