1. 程式人生 > >實驗三、總結線性表的幾種儲存結構。

實驗三、總結線性表的幾種儲存結構。

1、順序表:順序表是一段地址連續的儲存單元依次儲存線性表的資料元素,一般用一維陣列實現,這是與連結串列的不同之處。順序表中資料元素之間的邏輯關係是用儲存位置表示的,順序表的隨機存取結構。因為是選擇用陣列實現,所以要分配固定長度的陣列空間,這樣便限制了元素的數量,也容易浪費儲存空間。但同時,其儲存結構也使得尋找下一個元素會較為方便。順序表優點在於,無需為表示表中元素之間的邏輯關係而增加額外的儲存空間:隨機存取。但缺點是,插入和刪除操作需移動大量元素,表的容量難以確定,造成儲存空間碎片。

2、單鏈表:單鏈表是用一組任意的儲存單元存放線性表的元素。對比順序表,在單鏈表中是用結點來幫助其儲存。單鏈表中資料元素之間的邏輯關係用指標表示,是順序存取結構。結點由兩部分組成,分別是元素資料(data)和地址資訊(next)。其中地址資訊是用指標來定義,而定義頭指標是為了更好的確定表頭。用結點來進行資料的連線是動態儲存分配,對比順序表則解決其因為靜態儲存分配而形成的缺點。但單鏈表與順序表在查詢演算法中的平均時間效能均為O(n)。

3、雙鏈表:雙鏈表對比單鏈表則是在結點部分多了前驅指標域(prior),這樣使得檢索遍歷資料更加靈活。在雙鏈表中,其在指標的修改中要注意其修改的相對順序。順序的前後會改變演算法的執行,所以要特別注意。在定義建構函式時,其也多了關於前驅指標的定義,這裡也是與單鏈表不同之處。

4、靜態連結串列:靜態連結串列是用陣列來表示單鏈表,用陣列元素的下標來模擬單鏈表的指標。其是利用陣列定義,所以屬於靜態儲存分配。對比順序表,其多了一個模擬指標,對比單鏈表,其又不是動態的儲存分配。但是靜態連結串列與這兩種都有相像之處。在定義時,需將陣列和其下標都要兼顧,這個是建構函式的要點。其他則對比順序表和單鏈表無太大區別。

5、間接定址:間接定址是將陣列和指標結合起來的一種方法,其將陣列中儲存資料元素的單元改為儲存指向該元素的指標。與順序表不同的地方是,間接定址移動的是指標而不是元素,但其他地方則與順序表區別不大,所以其仍具有順序表隨機存取的優點和表長難以確定的問題。