課堂筆記 多維陣列 矩陣的壓縮儲存 廣義表

2021-09-29 03:08:58 字數 2409 閱讀 5840

線性表——具有相同型別的資料元素的有限序列。

將元素的型別進行擴充:

(多維)陣列——線性表中的資料元素可以是線性表,但所有元素的型別相同。

廣義表——線性表中的資料元素可以是線性表,且元素的型別可以不相同。

陣列的定義:陣列是由一組型別相同的資料元素構成的有序集合,每個元素受n(n≥1)個線性關係的約束,並稱該陣列為 n 維陣列。

陣列的特點:元素本身可以具有某種結構,屬於同一資料型別;陣列是乙個具有固定格式和數量的資料集合。

陣列——線性表的推廣

二維陣列是資料元素為線性表的線性表。

陣列的基本操作

1、訪問:給定一組下標,讀出對應的陣列元素;

2、修改:給定一組下標,儲存或修改與其相對應的陣列元素。

訪問和修改操作本質上只對應一種操作——定址

陣列沒有插入和刪除操作,不用預留空間,適合採用順序儲存。

陣列的儲存結構與定址

特殊矩陣:矩陣中很多值相同的元素並且它們的分布有一定的規律。

稀疏矩陣:矩陣中有很多零元素。

壓縮儲存的基本思想是: ⑴ 為多個值相同的元素只分配乙個儲存空間; ⑵ 對零元素不分配儲存空間。

特殊矩陣的壓縮儲存

1、對稱矩陣

特點:aij=aji

只儲存下三角部分的元素。

行、列從1開始編號:aij在一維陣列中的序號 = i×(i-1)/2+ j,因為一維陣列下標從0開始,所以aij在一維陣列中的下標 k= i×(i-1)/2+ j-1

行、列從0開始編號:aij在一維陣列中的序號 = i×(i+1)/2+ j+1,因為一維陣列下標從0開始,所以aij在一維陣列中的下標 k= i×(i+1)/2+ j

對於下三角中的元素aij(i≥j), 在一維陣列中的下標k與i、j的關係為:

k=i×(i-1)/2+j-1 。

上三角中的元素aij(istruct element

;三元組表:將稀疏矩陣的非零元素對應的三元組所構成的集合,按行優先的順序排列成乙個線性表。

三元組順序表

儲存結構定義:

const int maxterm=100;     

template struct sparsematrix

;

十字鍊錶

十字鍊錶結點類的定義

templateclass olnode

};

廣義表

廣義表(列表):n(≥0)個表元素組成的有限序列,記作:ls = (a0, a1, a2, …, an-1)

ls是表名,ai是表元素,它可以是表 (稱為子表),可以是資料元素(稱為原子)。 n為表的長度。n = 0 的廣義表為空表。

廣義表的基本概念

長度:廣義表ls中的直接元素的個數;

深度:廣義表ls中括號的最大巢狀層數。

表頭:廣義表ls非空時,稱第乙個元素為ls的表頭;

表尾:廣義表ls中除表頭外其餘元素組成的廣義表。

廣義表與線性表的區別

線性表的成分都是結構上不可分的單元素,廣義表的成分可以是單元素,也可以是有結構的表,線性表是一種特殊的廣義表,廣義表不一定是線性表,也不一定是線性結構。

廣義表的基本運算

(1) 求表頭gethead(l):非空廣義表的第乙個元素,可以是乙個單元素,也可以是乙個子表

(2) 求表尾gettail(l):非空廣義表除去表頭元素以外其它元素所構成的表。表尾一定是乙個表

廣義表的儲存

由於廣義表中的資料元素的型別不統一,因此難以採用順序儲存結構來儲存。

廣義表的儲存結構—頭尾表示法

表結點:儲存廣義表; 元素結點:儲存單元素

定義結點結構

enum elemtag ;  

template struct glnode ptr;

}; };

廣義表的特點

有次序性(乙個直接前驅和乙個直接後繼)

有長度(=表中元素個數)

有深度(=表中括號的重數)

可遞迴(自己可以作為自己的子表)

可共享(可以為其他廣義表所共享)

多維陣列與特殊矩陣的壓縮儲存

陣列是由型別相同的資料元素構成的有序集合,每個資料元素稱為乙個陣列元素,每個元素受 n 1 個線性關係的的約束,每個元素在n個線性關係中的序號i1,i2.in稱為該元素的下標,並稱該陣列為n維陣列.陣列的儲存結構與定址 由於陣列一般要求實現隨機訪問,所以一般採用順序儲存結構.由於記憶體單元是一維,而...

陣列的壓縮儲存(特殊矩陣 稀疏矩陣)

其實這裡就不應該說是陣列了,而應該是說行列式,對稱矩陣 a i j a j i 上下三角行列式 對角線以下 以上的元素均為0 帶狀行列式 這個可能不太好理解,舉乙個例子 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 這時看對角線比較舒服,可以看出...

矩陣的壓縮儲存

在編寫程式時往往都是二維陣列表示矩陣,然而在數值分析中經常出現一些階數很高的的矩陣同時在距震中有很多值相同的元素,或者是零元素,為了節省空間,可以對這類矩陣進行壓縮儲存,所謂的壓縮儲存就是,多個值相同的元之分配乙個儲存空間,對零元不分配空間。若值相同的元素或零元素在矩陣中分布有一定規律,則稱矩陣為特...