讀大話資料結構之線性表

2022-08-10 03:54:08 字數 2822 閱讀 3867

第三章

線性表3.1 線性表的定義

線性表:零個或多個資料元素的有限序列。

說明:線性表是乙個序列。也就是說,元素之間是有順序的,若元素存在多個,則第乙個元素無前驅,最後乙個元素無後繼,其他每個元素都有且只有乙個前驅和後繼。

線性表強調是有序的。

3.2 線性表的順序儲存結構

3.2.1 順序儲存定義

線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。

3.2.2 順序儲存方式

順序儲存結構需要有三個特性:

1)儲存空間的起始位置;

2)線性表的最大儲存容量;

3)線性表的當前長度。

3.2.3 陣列長度和線性表長度的區別

陣列長度:存放線性表的儲存空間的長度,儲存分配後這個量一般是不變的;

線性表長度:線性表中資料元素的個數,隨著線性表插入和刪除操作的進行,這個量是變化的。

隨機儲存結構:隨機訪問就是直接訪問,可以通過下標直接訪問的那種資料結構,與儲存位置無關,例如陣列。

3.3 順序儲存結構的插入和刪除

3.3.1 插入操作

插入演算法的思路:

·如果插入位置不合理,丟擲異常;

·如果線性表長度大於等於陣列長度,則丟擲異常或動態增加容量;

·從最後乙個元素開始向前遍歷到第

i個位置,分別將它們都向後移動乙個位置;

·將要插入元素填入位置i處;

·表長加

1.3.3.2 刪除操作

刪除操作的思路:

·如果刪除位置不合理,丟擲異常;

·取出刪除元素;

·從刪除元素位置開始遍歷到最後乙個元素位置,分別將它們都向前移動乙個位置;

·表長減

1.3.3.3 線性表順序儲存結構的優缺點

優點:·無須為表示表中元素之間的邏輯關係而增加額外的儲存空間;

·可以快速地訪問表中任一位置的元素(時間複雜度為

o(1)).

缺點:·插入和刪除操作需要移動大量元素;

·當線性表長度變化較大時,難以確定儲存空間的容量;

·造成儲存空間的「碎片

」。3.4 線性表的鏈式儲存結構

線性表鏈式儲存結構定義:

為了表示每個資料元素ai與其直接後繼資料元素

ai+1

之間的邏輯關係,對資料元素

ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後繼的資訊(即直接後繼的儲存位置)。我們把儲存資料元素資訊的域稱為資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱作指標或鏈。這兩部分資訊組成資料元素

ai的儲存映像,成為結點(

node

)。如果乙個鍊錶的每個結點中只包含乙個指標域,則叫做單鏈表。

我們把鍊錶中第乙個結點的儲存位置叫做頭指標。

有時為了更加方便的對鍊錶進行操作,會在單鏈表的第乙個結點前附設乙個結點,稱為頭結點。

3.5 單鏈表的整表建立

頭插法:

尾插法:

3.6 單鏈表結構與順序儲存結構優缺點

結論:·若線性表需要頻繁查詢,很少進行插入和刪除操作時,宜採用順序儲存結構。若需要頻繁插入和刪除時,宜採用單鏈表結構。

·當線性表中的元素個數變化較大或者根本不知道有多大時,最好用單鏈表結構,這樣可以不需要考慮儲存空間的大小問題。

3.7 靜態鍊錶

概念:用陣列描述的鍊錶叫做靜態鍊錶。

陣列的第乙個元素,即下標為0的元素的

cur就存放備用鍊錶的第乙個結點的下標;而陣列的最後乙個元素的

cur;

則存放第乙個有數值的元素的下標,相當於單鏈表的頭節點作用,當整個鍊錶為空時,則為0,表示無指向。

現在如果我們需要在「乙」和

「丁」之間插入乙個值為「丙

」的元素,只需要將「乙

」的cur改為

7,表示下一位是「丙

」,並將「丙

」的cur改為

3,表示下一位是丁。如圖

3-12-3

所示。現在如果我們刪除了第乙個元素「甲

」,表示現在「甲

」這個位置空出來了,如果未來有新人要來則優先考慮這裡,所以刪除的位置成為第乙個優先空位,即首元素的

cur為

1, 第乙個元素位置的

cur改為

8,而下標為

8的位置

cur改為

9,最後元素位置的

cur改為

2,如圖

3-12-4

所示。

靜態鍊錶的優缺點:

靜態鍊錶在插入和刪除操作時不需要移動元素,只需要修改游標,從而改進了在順序儲存結構中插入和刪除操作需要移動

大量元素的缺點;但並沒有解決連續分配儲存帶來的表長難以確定的問題;並且失去了順序儲存結構隨機訪問的特性。

3.8 迴圈鍊錶

將單鏈表中終端結點的指標端由空指標改為指向頭結點,就使整個單鏈表形成乙個環,這種頭尾相接的單鏈表稱為單迴圈鍊錶,簡稱迴圈鍊錶(circular linked list)。

3.9 雙向鍊錶

雙向鍊錶(double linked list)是在單鏈表的每個結點中,再設定乙個指向其前驅結點的指標域。

《大話資料結構》之線性表

自己在看 大話資料結構 這本書,順便需要練習使用部落格,就順便把自己的讀書筆記發上來啦。線性表 list 零個或多個 相同型別的 資料元素的有限序列。順序儲存定義 線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。順序儲存方式 線性表的順序儲存結構就是在記憶體中找了塊地兒...

《大話資料結構》 線性表

created by pengxiangzhou on 2021 1 24.include ifndef c ds linear list h define c ds linear list h endif c ds linear list h 線性表 順序儲存結構 順序儲存結構的三個屬性 陣列da...

大話資料結構 線性表

線性表是零個或多個資料元素的有限序列。線性表的抽象資料型別定義如下 adt 線性表 list data 線性表的資料物件集合為,每個元素的型別均為datatype。其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的...