第6次資料結構上機(陣列和廣義表的基本運算實現)

2021-08-02 09:25:41 字數 1912 閱讀 7711

實驗名稱:陣列和廣義表的基本運算實現

指導教師:王瑩潔              

專業班級:計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...