稀疏矩阵压缩存储的三元组表示法

本是古典 何须时尚 2022-06-16 13:07 307阅读 0赞
  1. /*稀疏矩阵压缩存储的三元组表示法*/
  2. #include<stdio.h>
  3. typedef struct node
  4. {
  5. int i; /*元素所在行号*/
  6. int j; /*元素所在列号*/
  7. int x; /*元素值*/
  8. }NODE;
  9. typedef struct spmatrix
  10. {
  11. int mu; /*行数*/
  12. int nu; /*列数*/
  13. int tu; /*元素个数*/
  14. NODE data[5];
  15. }SpMatrixTp;
  16. /*二维矩阵转换为三元组*/
  17. Spmatrix(int x[5][6],SpMatrixTp *a)
  18. {
  19. int i,j,q=0;
  20. for(i=0;i<5;i++)
  21. for(j=0;j<6;j++)
  22. if(x[i][j]!=0)
  23. {
  24. q++;
  25. (*a).data[q].i=i;
  26. (*a).data[q].j=j;
  27. (*a).data[q].x=x[i][j];
  28. }
  29. (*a).mu=i;
  30. (*a).nu=j;
  31. (*a).tu=q;
  32. }
  33. main()
  34. {
  35. SpMatrixTp a;
  36. int A[5][6]={
  37. 0},i,j;
  38. A[0][1]=5;
  39. A[2][1]=1;
  40. A[2][3]=7;
  41. A[3][1]=6;
  42. A[4][4]=9;
  43. printf("----原稀疏矩阵----\n");
  44. for(i=0;i<5;i++)
  45. for(j=0;j<6;j++)
  46. {
  47. printf("%3d",A[i][j]);
  48. if(j==5)
  49. printf("\n");
  50. }
  51. Spmatrix(A,&a);
  52. printf("----压缩存储的三元组----\n");
  53. for(i=1;i<=a.tu;i++)
  54. printf("%d %d %d\n",a.data[i].i,a.data[i].j,a.data[i].x);
  55. }

发表评论

表情:
评论列表 (有 0 条评论,307人围观)

还没有评论,来说两句吧...

相关阅读