學習資料結構(五) 陣列

2021-10-18 13:26:22 字數 1155 閱讀 5645

陣列是下標與值成對的集合。在c++中有靜態與動態之分:(1)靜態陣列:定義時顯式宣告資料型別與空間記憶體大小。(2)動態陣列:程式執行時才分配空間的。

陣列有兩種順序映像方式:(1)以行序為主序(低下標優先):最右邊的下標先變化,從右到左;(2)以列序為主序(高下標優先):最左邊的下標先變化,從左到右。

主要是針對特殊矩陣的壓縮:例如:實對稱矩陣、三角矩陣和對角矩陣。

由於實對稱矩陣中矩陣元素

類似於實對稱矩陣。

其壓縮方法是只儲存非零元素,包括該元素的行標和列標。因此,乙個非零元素由三元組才能唯一確定。該線性表構成了稀疏矩陣的三元組順序表。

當稀疏矩陣個數和位置經過運算變化較大時,就不再適合用順序結構儲存了。應採用下面方法儲存:

用指標域將三元組元素鏈結起來。

矩陣是乙個包括行指標的順序表,行指標鏈結的是同行每個列的非零元素。首先有乙個矩陣類,主要包括行線性表、行序、列序、數字、最大空間,行線性表由當前行序號和行指標組成,行指標指向列元素,包括列序號、值、結點指標。

十字鍊錶為矩陣的每一行設定乙個單獨的迴圈鍊錶,同時也為每一列設定乙個單獨的迴圈鍊錶,這樣稀疏矩陣的每乙個元素就同時包含在了兩個鍊錶中,大大降低了鍊錶長度和時間複雜度。

其中,row.col和val分別代表非零元素所在的行標、列標以及元素值;down和right分別用來鏈結同列和同行的下乙個非零元素節點。也就是說,同列非零元素是通過down指標鏈結成乙個列鍊錶,而 right 指標則把同行非零元素鏈結成乙個行鍊錶。對稀疏矩陣的每個非零元素來說,既是列煉表中乙個結點,同時也是行煉表中乙個結點。每個非零元素就好比處於乙個十字路口,因此,這種表示稀疏矩陣的儲存結構稱為十字鍊錶。

十字鍊錶中設定行頭結點,列頭結點以及煉表頭結點。它們採用與非零元素結點類似的結構。由於行頭結點中只有right指標指向該行第乙個非零元素(down為空),列頭結點中只有down指標指向該列的第乙個非零元素(right 為空)。因此,為了節省空間,行頭結點和列頭結點可以共用一組頭結點,行列頭結點數為矩陣行數和列數中的最大值,並且設定row和 col的值均為0,各個頭結點之間用next指標域連線。

資料結構 五) 多維陣列

一 總結 對這一部分還是很生疏,不太會做,而且openjudge上的題目進度緩慢,不開森。但是我還是會好好做題的,也得抽空複習一下,不然都忘光了。二 筆記 線性表 具有相同型別的資料元素的有限序列。多維 陣列 線性表中的資料元素可以是線性表,但所有元素的型別相同。廣義表 線性表中的資料元素可以是線性...

資料結構(五)

陣列 陣列的抽象資料型別 adt array r pinitarray a,n,b1,bn destroyarray a value a,e,index assign a,e,index adt array 矩陣壓縮儲存 特殊矩陣 相同元素分布有一定規律的矩陣 稀疏矩陣 可以理解為零元素極多的矩陣 ...

Python學習筆記(五) 資料結構

簡單介紹python中的元組 列表 字典和集合。使用比較多的就是列表和字典。元組使用 定義,對於只含有乙個元素的元組要寫成 x,注意後面的逗號不可以少。注意,元組已經建立是不能改變的,如果你需要改變元組中的內容,只能建立新的元組。元組函式 元組 tup 1,1,2 5,9 元組函式 x in tup...