線性表是具有相同特徵資料元素的乙個有限序列。
元素個數叫做線性表的長度,n(n>=0)表示,n=0(空表)
只有乙個表頭元素,只有乙個表尾元素。表頭無前驅,表尾無後繼,除表頭和表尾外,其他元素只有乙個直接前驅,也只有乙個直接後繼。
順序儲存結構(順序表)和鏈式儲存結構(鍊錶)兩種。
順序表 連續儲存、順序儲存。
鍊錶 不僅有元素的資訊,還有邏輯關係的資訊(後繼結點的位址資訊)。
兩種儲存結構的比較
順序表:
隨機訪問特性、占用連續的儲存空間。
插入:需要移動多個元素。
鍊錶: 不支援隨機訪問、儲存空間利用率較順序表稍低、支援儲存空間的動態分配。
插入:無需移動元素。
鍊錶的5種形式:
單鏈表:
帶頭結點的單鏈表(頭結點不存資訊):head->next==null,鍊錶為空。
不帶頭的單鏈表:head==null,鍊錶為空。
雙鏈表:多了乙個前驅結點
迴圈單鏈表:
單鏈表最後乙個指標域(空指標)指向第乙個結點。若迴圈結點戴頭結點,則最後乙個指標域(空指標)指向頭結點。
迴圈雙鏈表:
head==null,不帶頭結點的迴圈雙鏈表為空。
帶頭結點,空狀態下,head->next和head->prior都必然等於head。
以下四句任何一句為真都可以判斷迴圈雙鏈表為空。
head-
>next==head;
head-
>priot==head;
head-
>next==head && head-
>priot==head;
head-
>next==head || head-
>priot==head;
靜態鍊錶
與順序表相比優點是便於插入和刪除。
說明:考研中經常考到順序表和煉表的比較,給出全面答案。
基於空間的比較
儲存方式的分配:
順序表的儲存空間是一次性分配的,鍊錶的儲存空間是多次分配的。
儲存密度(儲存密度=結點值域所佔的儲存量/結點結構所佔的儲存總量)
順序表的儲存密度=1,鍊錶的儲存密度<1(因為結點中有指標域)
基於時間的比較
訪問方式
順序表可以隨機訪問;
鍊錶只能順序訪問(遍歷之前的元素)
插入/刪除時移動元素的個數:
順序表平均需要移動近一半元素;
鍊錶不需要移動元素,只需要改變指標。
n和元素的順序表刪除和插入施加複雜度分析:
把長度n陣列的前端k(kreverse(a,0,n - 1,k)
;
把長度n陣列的前端k(k先逆序前k個再重複1的過程
reverse(a,0,k-1,k);
reverse(a,0,n-1,k);
陣列中元素(x0,x1,…,xn-1)變為(xp,xp+1,…,xn-1,x0,x1,…,xp-1),即迴圈左移p個位置。
「前扔後」
要求:123456789 -> 456789123
或者把123看成乙個整體
=>321456789
=>321987654
=>456789123
reverse
(a,0
,p-1
,p);
reverse
(a,p,n-
1,n-p)
;reverse
(a,0
,n-1
,n);
「後提前」
要求:123456789 -> 789123456
把123456看成乙個整體
=>654321789
=>654321987
=> 789123456
reverse
(a,0
,n-p-
1,n-p)
;reverse
(a,n-p,n-
1,p)
;reverse
(a,0
,n-1
,n);
資料結構考研筆記 線性表
1.線性表的定義 線性表是具有相同特性元素的乙個有限序列。所含元素個數 線性表長度。2.線性表的邏輯特性 只有乙個表頭元素,乙個表尾元素,表頭元素沒有前驅,表尾元素沒有後繼,其他元素只有乙個直接前驅,乙個直接後繼。3.線性表的儲存結構 1 順序儲存結構 順序表 隨機訪問特性 需占用連續的儲存空間 做...
考研資料結構 線性表 棧
1.棧是一種線性表,主要特點就是只允許在一端進行插入或刪除操作的線性表。2.棧頂 top 線性表允許進行插入和刪除的一端 棧底 bottom 是固定的,不允許進行插入和刪除的一端 採用順序儲存的棧被稱為 順序棧 通常順序儲存結構由乙個 一維陣列 和乙個記錄 棧頂 元素位置的變數組成。1.結構定義 d...
考研資料結構 線性表 佇列
def 佇列是一種操作受限的線性表,與棧相同也不同,不同的是佇列是在一端進入 入隊 另一端出去 出隊 操作特性是先進先出。通常由乙個一維陣列和乙個記錄佇列頭元素位置的變數front以及乙個記錄尾元素位置的變數rear組成。1.佇列的順序儲存結構定義 define maxsize 100 佇列順序儲存...