1.線性表的定義
是具有相同特性數據元素的一個有限序列。元素個數叫線性表的長度。
線性表是一種簡單的數據結構,可以有序,也可以無序。
2.線性表的邏輯特性
一個學生在隊頭,一個在隊尾,除了隊頭和隊尾,其他元素只有一個直接前驅,一個直接後續。
3.線性表的存儲結構
1)順序存儲結構(順序表):把元素按照其邏輯順序存儲。具有 隨機訪問特性。
2)鏈式存儲結構(鏈表):每個結點不僅包含所存元素信息,還包含元素之間邏輯關係的信息。不支持隨機訪問。
4.鏈表有五種形式
1)單鏈表(單向)
a.帶頭結點的單鏈表(有一個結點,不存儲信息)
b.不帶頭結點的單鏈表(所有結點都存儲信息)
2)雙鏈表(雙向)
3)循環單鏈表
4)循環雙鏈表
5)靜態鏈表
單鏈表如上圖所示的單行車道,只允許車輛往一個方向行駛;
雙鏈表如上圖所示的雙向車道,車輛既可以從左往右行駛,也可以從右往左行駛;
循環單鏈表如上圖所示的單向環形車道,車輛可沿着一個方向行駛在這條車道上
循環雙鏈表如上圖所示的雙向環形車道,車輛可以沿着兩個方向行駛在這條車道上。
5.順序表和鏈表比較【重要】
5.1 基於空間的比較
1)存儲分配的方式
順序表的存儲空間是一次性分配的。
鏈表的存儲空間是多次分配的。
2)存儲密度(存儲密度 = 結點值域所佔的存儲量 / 結點結構所佔的存儲總量)
順序表的存儲密度 = 1
鏈表的存儲密度 < 1 (因爲結點中有指針域)
5.2 基於時間的比較
1)存儲方式
順序表可以隨機存取,也可以順序存取
鏈表只能順序存取
2)插入/刪除時移動元素個數
順序表平均需要移動近一半元素
鏈表不需要移動元素,只需要修改指針