1 #include<stdio.h> 2 #include<stdlib.h> 3 4 #define Max 80 5 #define M 4 6 #define N 3 7 8 typedef struct { 9 int r;//行 10 int c;//列 11 int d;//元素值 12 }tyNode; 13 typedef struct { 14 int rows;//最大行 15 int cols;//最大列 16 int nums;//元素数量 17 tyNode data[Max]; 18 }TSMatrix; 19 20 //稀疏矩阵转换成三元组 21 22 void CreatMat(TSMatrix &t,int A[M][N]) 23 { 24 int i,j; 25 t.rows=M; 26 t.cols=N; 27 t.nums=0; 28 for(i=0;i<N;i++){ 29 for(j=0;j<M;j++){ 30 if(A[j][i]!=0)/*只选非零的项*/{ 31 t.data[t.nums].r=j; 32 t.data[t.nums].c=i; 33 t.data[t.nums].d=A[j][i]; 34 t.nums++; 35 } 36 } 37 } 38 } 39 40 41 42 //打印出三元组 43 void dayin(TSMatrix &t){ 44 int i; 45 for(i=0;i<t.nums;i++){ 46 printf("(%d %d %d)\t",t.data[i].r,t.data[i].c,t.data[i].d); 47 } 48 } 49 50 int shuzu(int A[M][N]) 51 { 52 int i,j; 53 for(i=0;i<N;i++){ 54 printf("为第%d行赋值\n",i+1); 55 for(j=0;j<M;j++){ 56 scanf("%d",&A[j][i]); 57 } 58 } 59 } 60 61 int main() 62 { 63 TSMatrix t; 64 printf("选择数字的行列\n"); 65 int A[M][N]; 66 shuzu(A); 67 printf("\n--------------\n"); 68 printf("将矩阵改为三元组\n"); 69 CreatMat(t,A); 70 printf("\n--------------\n"); 71 printf("将矩阵改为三元组\n"); 72 dayin(t); 73 74 }
浙公网安备 33010602011771号