學習筆記(4)——數組和廣義表

此處介紹的數組不是C、C++等語言中定義的數組,注意區別。

n維數組,每維含有mi個數據(i=1,2,...,n),則n維數組含有sum(mi)個數據。其中,n稱爲數組的維數,mi稱爲維界。數組一旦被定義,維度與維界都不能被改變。當n=1時,數組退化爲定長線性表。注意:每維數據的個數可以不同。數組中的數據元素類型必須一致。

數組一般不進行插入、刪除操作,一旦建立了數組,結構中的數據元素的個數以及元素之間的關係就不再發生變動。

數組的存儲:

由於存儲空間爲一維結構,因此數組數據在存儲時存在存儲次序問題。起始地址稱爲基地址(基址)。數組元素的存儲可按維度進行,即將n維數組按維度拉成一維進行存儲。

對矩陣:

對於高級語言,一般使用二維數組來存儲矩陣。爲了節省空間,可以對矩陣進行壓縮存儲。

對稱矩陣:以行爲主序存儲對稱矩陣的下三角陣元素以及對角線元素。同樣也是用於上(下)三角陣的存儲。

稀疏矩陣:一般當非零項的個數佔總數的比例小於5%時稱其爲稀疏矩陣。以一個三元組存儲稀疏矩陣的元素,即(行號,列號,數值)。可以有下述幾種存儲方式:

(1)順序表:以順序存儲結構來表示三元組表。這種存儲方式適合進行矩陣轉置等運算

(2)行邏輯鏈接的順序表:爲便於隨機存取任意一行的非零元,則記錄每行第一個非零元在三元表中的位置。這種存儲方式適合矩陣相乘等運算。

(3)十字鏈表:每個非零元除包含上述三元以外,還包含指向同行中下一個元素的指針和同列中指向下一個元素的指針。這種存儲方式適合矩陣相加等運算。


廣義表:

廣義表(又稱列表)中的元素可以是單個元素,也可以是一個廣義表,分別稱爲原子和子表。列表是一個多層次的結構,第一個元素爲表頭,表頭可以是原子,也可以是子表;剩餘元素稱爲表尾,表尾必定是一個子表。

廣義錶鏈式存儲:

由於表中元素分爲原子和子表兩種,因此,需要兩種結構的結點。表結點:標誌域,指示表頭的指針域,指示表尾的指針域;原子節點:標誌域,值域。

其中m元多項式的表示就是廣義表的應用(m層廣義表,每層表示一個變量)。

廣義表的深度就是廣義表中括號的重數,是廣義表的一中度量。


發佈了17 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章