데이터 구조 - 희소 행렬 연산 기 (C 언어)

2298 단어
데이터 구조 - 희소 행렬 연산 기 (C 언어)
/*****************        ****************/

#include
#include

#define OK    1
#define TRUE  1
#define ERROR 0
#define FALSE 0

#define MAX_SIZE 100
 

typedef struct{      //      
	int x;
	int y; 
	int e;
}Triad;
typedef struct {
	int mrow,mcol,ms;
	Triad data[MAX_SIZE];
}Rtriad;

void Input(Rtriad &S){                                  //           
	printf("    , (row col):");
	scanf("%d%d",&S.mrow,&S.mcol);
	printf("       ,             ,'-1 -1 -1'    :
"); int x,y,z; scanf("%d%d%d",&x,&y,&z); S.ms=0; while(!(x==-1&&y==-1&&z==-1)){ // S.ms+1, 0 S.ms S.data[S.ms].x=x; S.data[S.ms].y=y; S.data[S.ms].e=z; S.ms++; scanf("%d%d%d",&x,&y,&z); } S.ms--; } void Add(Rtriad S1,Rtriad S2,Rtriad &S3){ // if(S1.mcol!=S2.mcol||S1.mrow!=S2.mrow){ printf("ERROR!!!
"); return ; } S3.mcol=S1.mcol ; S3.mrow=S1.mrow ; S3.ms=0; int row,col,s,x,y,z; for(row=1;row<=S3.mrow;row++){ for(col=1;col<=S3.mcol;col++){ z=0; for(s=0;s<=S1.ms;s++){ if(S1.data[s].x==row&&S1.data[s].y==col){ S3.data[S3.ms].x=row; S3.data[S3.ms].y=col; S3.data[S3.ms].e=S1.data[s].e; z++; } } for(s=0;s<=S2.ms;s++){ if(S2.data[s].x==row&&S2.data[s].y==col){ S3.data[S3.ms].x=row; S3.data[S3.ms].y=col; if(z==0) S3.data[S3.ms].e=S2.data[s].e; else S3.data[S3.ms].e+=S2.data[s].e; z++; } } if(z!=0) S3.ms++; } } int m=0; for(int t=0;t<=S3.ms;t++){ if(S3.data[t].e==0){ // for(int i=t+1;i

좋은 웹페이지 즐겨찾기