實驗名稱:陣列和廣義表的基本運算實現
指導教師:王瑩潔
專業班級:計163-1
姓 名:曹欣宇
學 號:201658503125
電子郵件:[email protected]
實驗地點:計算機中心401
實驗成績:
日期: 2017 年 6月 9日
一、實驗題目
假設n n的稀疏矩陣a採用三元組表示,設計乙個程式exp6-4.cpp實現如下功能:
(1)生成如下兩個稀疏矩陣的三元組a和b;
(2)輸出a轉置矩陣的三元組;
(3)輸出a+b的三元組;
(4)輸出a b的三元組。
二、實驗目的
掌握稀疏矩陣的儲存結構以及基本運算實現演算法。
三、實驗要求
針對程式exp6-4.cpp,輸出結果如下:
見執行圖。
四、實驗步驟
(包括基本設計思路、演算法設計、函式相關說明、輸入與輸出以及程式執行結果)
基本設計思路:使用函式,使程式分塊。
演算法設計:先建立三元組結構體,然後根據矩陣中元素是否為0,將矩陣中元素改為三元組表示,矩陣轉置時,只需將三元組中行列互換即可。矩陣的加法和乘法使用矩陣運算規則計算,然後呼叫建立和輸出三元組的函式即可。
函式相關說明:void creatmat(tsmatrix&t,int a[m][n])//建立三元組
void dispmat(tsmatrix t)//輸出三元組
void trantat(tsmatrixt,tsmatrix &tb)//矩陣轉置(三元組表示)
void jia(int a[m][n],intb[m][n],int c[m][n])//矩陣的加法函式
void cheng(int a[m][n],intb[m][n],int c[m][n])//矩陣的乘法函式
輸入:無。
輸出:見執行圖。
執行結果:
五、實驗心得體會
通過實驗,掌握了矩陣三元組的表示方法,複習了矩陣的相關運算。
六、源程式清單(**)
#include #include #include #define m 4
#define n 4
#define maxsize 80
using namespace std;
typedef struct
tupnode;
typedef struct
tsmatrix;
void creatmat(tsmatrix &t,int a[m][n])
{ int i,j;
t.rows=m;
t.cols=n;
t.nums=0;
for(i=0; i
資料結構 陣列和廣義表
感覺陣列這一段沒講什麼太多的東西。先是講了下定義,就是每個維度上都有對應的前驅後繼,首尾元素例外。操作只有初始化 銷毀 取元素 修改元素。然後講了下適合用順序儲存結構,多維情況下根據下標 j1 j2 j3 jn 找到對應畫素的儲存位置 cn l,ci 1 bi ci,loc loc基址 ciji l...
資料結構 陣列和廣義表
陣列長度固定,元素型別一致,沒有鏈式映像,因為不能保證位址連續 陣列與線性表的區別與聯絡 相同點 都是相同資料型別的的資料元素組成的有限序列 不同點 陣列要求位址連續,而線性表則無此要求 線性表的元素是邏輯意義上不可再分的,而陣列中每乙個元素還可以是乙個陣列 多維陣列可分 操作上的不同,陣列一旦被定...
資料結構 陣列和廣義表
例 設有一 個二維陣列a m n 按行優先順序儲存,假設a 0 0 存 放位置在644 10 a 2 2 存放位置在676 10 每個元素佔乙個空間,問a 3 3 10 存放在什麼位置?腳注10表示用10進製表示。設陣列元素a i j 存放在起始位址為loc i,j 的儲存單元中 loc 2,2 l...