[C][104資料結構][HwA] Operation of Sparse Matrix

資料結構(Data Structures)    程式作業-A    以陣列做稀疏矩陣之運算

以Ch2-4.c 的稀疏矩陣陣列表示法為基礎,擴充支援稀疏矩陣之加、減、乘、轉置,等運算。
由『敎學支援平台』本課程之「$程式作業-規格要求」中下載ExerciseA.rar。

ExerciseA.rar內之檔案:
 ExerciseA.h :宣告用標頭檔,不應有所更動。
 ExerciseA.c : 作業中要求補齊功能的五個函數應由學生定義在其中
• void printSparseMatrix(Matrix *mat)
• void transSparseMatrix(Matrix *result, Matrix *source)
• void addSparseMatrix(Matrix *sum, Matrix *matA, Matrix *matB)
• void subSparseMatrix(Matrix *diff, Matrix *matA, Matrix *matB)
• void multSparseMatrix(Matrix *prod, Matrix *matA, Matrix *matB)
 ExerA-Data.c :含矩陣輸入資料與運算驅動程式

作業繳交時,學生必須包括至少一份可正確執行的測試資料(即ExerA-Data.c )
作業批改時,助教會換上新的測試資料(新的ExerA-Data.c )以驗證程式正確性



※程式功能要求
  補上這五個C函數的定義(在ExerciseA.c 之中)
• printSparseMatrix(Matrix *mat)
 用長方型格式輪出稀疏矩陣*mat;原稀疏矩陣無值的項補零印出
• transSparseMatrix(Matrix *result, Matrix *source)
 將稀疏矩陣*source 轉置(transpose),置入稀疏矩陣*result 之中
• addSparseMatrix(Matrix *sum, Matrix *matA, Matrix *matB)
 將矩陣*matA 加上矩陣*matB, 結果置入矩陣*sum 之中
  (*sum) = (*matA) + (*matB)
• subSparseMatrix(Matrix *diff, Matrix *matA, Matrix *matB)
 將矩陣*matA 減去矩陣*matB, 結果置入矩陣*diff 之中
  (*diff) = (*matA) - (*matB)
• multSparseMatrix(Matrix *prod, Matrix *matA, Matrix *matB)
 將矩陣*matA 乘上*matB, 結果置入矩陣*prod 之中
  (*prod) = (*matA) X (*matB)

  注意參數的順序!




※書面報告
1.時間複雜度分析.doc
  以Big Oh, O()符號, 表示出你的程式所用之演算法,各計算函數之時間複雜度,
    表示成rows, cols, numOfTerms 的函數。參考課本p.1-31頁「1-7-1 Big Oh函數的基礎」,
    簡單分析並概要說明如下你寫的C函數其時間複雜度為何?
    1) void transSparseMatrix(Matrix *result, Matrix *source)以r, c, n, 表示
    2) void addSparseMatrix(Matrix *sum, Matrix *matA, Matrix *matB) &
       void subSparseMatrix(Matrix *diff, Matrix *matA, Matrix *matB)
     以r, c, nA, nB, 表示(note: r = rA = rB, c = cA = cB )
    3) void multSparseMatrix(Matrix *prod, Matrix *matA, Matrix *matB)
     以rA, cr, nA, cB, nB, 表示(note: cr = cA = rB )
2.程式作業A說明.doc
  概要說明程式使用及設計方式,及程式撰寫及測試過程是否遭遇困難及解決之道。

  以上分為兩個MS Word檔,連同程式碼一併繳交。


題目:ExerciseA.rar
https://drive.google.com/open?id=0B1cXVSjadhC0R0djVmZTcUVCdFE