1 #include<stdio.h> 2 #include<stdlib.h> 3 #define MaxSize 100 4 5 typedef struct{ 6 int i,j; 7 int data; 8 }triple; 9 10 typedef struct{ 11 int r,c,num; 12 triple data[MaxSize]; 13 }TSMatrix; 14 15 16 //初始化稀疏矩阵 17 void Init_TSMatrix(TSMatrix* T){ 18 T = (TSMatrix* )malloc(sizeof(TSMatrix)); 19 printf("初始化稀疏矩阵成功\n\n"); 20 } 21 22 //设定稀疏矩阵 23 void Set_TSMatrix(TSMatrix* T){ 24 TSMatrix* t = T; 25 int i,j,data,r,c; 26 int juNum; 27 printf("请输入矩阵大小“行,列”\n"); 28 scanf("%d,%d",&r,&c); 29 printf("(输入时请注意:以行优先输入)\n"); 30 t->c = c; 31 t->r = r; 32 while(1){ 33 printf("请输入“行,列,整型数值”\n"); 34 scanf("%d,%d,%d",&i,&j,&data); 35 if(i<t->data[t->num-1].i || i==t->data[t->num-1].i && j<=t->data[t->num-1].j){ 36 printf("输入行列错误,请重新输入\n"); 37 continue; 38 } 39 t->data[t->num].i = i; 40 t->data[t->num].j = j; 41 t->data[t->num].data = data; 42 t->num++; 43 printf("\n继续输入?(1.继续\t任意键结束)\n"); 44 scanf("%d",&juNum); 45 if(juNum != 1 || t->num >= (r*c)){ 46 printf("结束元素设置\n"); 47 break; 48 } 49 } 50 } 51 52 //输出所存储的稀疏矩阵 53 void Disp_TSMatrix(TSMatrix *T){ 54 TSMatrix* t = T; 55 int k = 0; 56 while(k < t->num){ 57 printf("(%d,%d,%d\n)\n",t->data[k].i ,t->data[k].j ,t->data[k].data); 58 printf("---------------\n"); 59 } 60 printf("输出稀疏矩阵三元组完成\n\n"); 61 } 62 63 //查找矩阵中的三元组 64 void Fin_Triple(int i,int j,TSMatrix* T){ 65 printf("该稀疏矩阵中对应行列元素为:"); 66 int k = 0; 67 for(int k = 0;k<T->num;k++){ 68 if(T->data[k].i == i && T->data[k].j == j) 69 printf("%d\n",T->data[k].data); 70 } 71 printf("0\n"); 72 } 73 74 //在稀疏矩阵中增加一个三元组 75 void Add_Triple(triple* tri,TSMatrix* T){ 76 int k = T->num-1; 77 while(1){ 78 if(T->data[k].i == tri->i && T->data[k].j == tri->j){ 79 printf("该行列元素已存在,增加失败\n"); 80 break; 81 } 82 else if(T->data[k].i>tri->i || T->data[k].i==tri->i && T->data[k].j>tri->j){ 83 T->data[k+1].i = T->data[k].i; 84 T->data[k+1].j = T->data[k].j; 85 T->data[k+1].data = T->data[k].data; 86 k--; 87 } 88 else{ 89 T->data[k+1].i = T->data[k].i; 90 T->data[k+1].j = T->data[k].j; 91 T->data[k+1].data = T->data[k].data; 92 T->data[k].i = tri->i; 93 T->data[k].j = tri->j; 94 T->data[k].data = tri->data; 95 printf("三元组增加成功\n"); 96 break; 97 } 98 } 99 }
5.22学习打卡矩阵三元组(上)
猜你喜欢
转载自www.cnblogs.com/L1Gd0ng/p/10909060.html
今日推荐
周排行