Guest User

Untitled

a guest
Jan 22nd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. /* 程式: Ch2-4e.c */
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #define MAX_TERMS 10 /* 稀疏矩陣的最大元素數 */
  5.  
  6. struct Term /* 稀疏矩陣的元素結構 */
  7. {
  8. int row; /* 元素的列數 */
  9. int col; /* 元素的欄數 */
  10. int value; /* 元素的值 */
  11. };
  12.  
  13. struct sMatrix /* 稀疏矩陣的結構 */
  14. {
  15. int rows; /* 矩陣的列數 */
  16. int cols; /* 矩陣的欄數 */
  17. int numOfTerms; /* 矩陣的元素數 */
  18. struct Term smArr[MAX_TERMS];/* 壓縮陣列的宣告 */
  19. };
  20.  
  21. typedef struct sMatrix Matrix; /* 建立稀疏矩陣的新型態 */
  22. Matrix m; /* 建立稀疏矩陣 */
  23. /* 抽象資料型態的操作函數宣告 */
  24. extern void createMatrix(int r,int c,int *arr);
  25. extern void printMatrix();
  26.  
  27. /* 函數: 建立稀疏矩陣 */
  28. void createMatrix(int r,int c,int *arr)
  29. {
  30. int i, j, count;
  31. m.rows = r; /* 初始結構的成員變數 */
  32. m.cols = c;
  33. count = 0;
  34. for ( i = 0; i < r; i++ ) /* 二維陣列的走訪 */
  35. for ( j = 0; j < c; j++ )
  36. if ( arr[i*c+j] != 0 ) /* 元素有值 */
  37. {
  38. m.smArr[count].row = i; /* 列數 */
  39. m.smArr[count].col = j; /* 欄數 */
  40. m.smArr[count].value = arr[i*c+j];/* 元素值 */
  41. count++;
  42. }
  43. m.numOfTerms = count;
  44. }
  45.  
  46. /* 函數: 顯示稀疏矩陣 */
  47. void printMatrix()
  48. {
  49. int i;
  50. /* 顯示稀疏矩陣尺寸和項目數 */
  51. printf("尺寸: %d X %d", m.rows, m.cols);
  52. printf(" 項目數: %d\n", m.numOfTerms);
  53. printf("列row\t欄col\t值value\n");
  54. /* 顯示稀疏矩陣的各項目座標與值 */
  55. for ( i = 0; i < m.numOfTerms; i++)
  56. {
  57. printf(" %d\t%d",m.smArr[i].row,m.smArr[i].col);
  58. printf("\t%d\n", m.smArr[i].value);
  59. }
  60. }
  61.  
  62. /* 主程式 */
  63. int main()
  64. { /* 稀疏矩陣 */
  65. int sparse[6][9] = { 0, 7, 0, 0, 0, 0, 0, 0, 0,
  66. 0, 0, 0, 5, 0, 0, 0, 0, 3,
  67. 0, 0, 0, 0, 0, 1, 0, 0, 0,
  68. 2, 0, 0, 0, 4, 0, 0, 0, 0,
  69. 0, 0, 8, 0, 0, 0, 0, 0, 0,
  70. 0, 0, 0, 0, 0, 0, 0, 9, 0 };
  71. int *fp = &sparse[0][0]; /* 取得陣列的指標 */
  72. /* 建立稀疏矩陣物件 */
  73. createMatrix(6, 9, fp);
  74. printMatrix(); /* 顯示稀疏矩陣 */
  75.  
  76. system("PAUSE");
  77. return 0;
  78. }
Add Comment
Please, Sign In to add comment