Linear List 線性表
[TOC]
基本概念
最常用,最簡單的一種數據結構。
是由n(n>=0)個數據元素(結點)a[0],a[1],a[2]…,a[n-1]組成的有限序列。
一個數據元素可以由若干個數據項item
組成。數據元素稱為記錄record
,含有大量記錄的線性表又稱為文件file
。
這種結構具有下列特點 :
- 頭元素:存在一個唯一的沒有前驅的(頭)數據元素;
- 尾元素:存在一個唯一的沒有后繼的(尾)數據元素;
- 除此之外,每一個數據元素均有一個直接前驅和一個直接后繼數據元素。
一、兩種表示結構 1.順序表示 2.鏈式表示
1.1 順序表示
使用數組來存儲線性表。
隨機訪問效率高,插入刪除可能需要移動大量的數據。
1.2 鏈式表示:鏈表 linked list
使用鏈表來存儲線性表。
數據存儲于節點Node
的數據域中,節點之間使用指針或引用連接。
插入效率高,隨機訪問效率低。
1.2.1 線性鏈表(又名單鏈表、單向鏈表) singly linked list
特點是鏈表的方向是單向的
1.2.2 循環鏈表 circular linked list
單向鏈表的表尾指向表頭,則整個鏈表形成一個環。
是否為空的判斷條件是下一個節點是不是頭指針。
1.2.2 雙向鏈表 double linked list
單向鏈表只能順著一個方向查找元素,指針域只指示后繼節點。
因此 nextElement的時間復雜度是O(1),而PriorElement的時間復雜度是O(n)。
為了克服這種缺點,產生了雙向鏈表double linked list
.指針域有兩個指針,分別指向前驅和后繼節點。
1.2.3 其他鏈表:靜態鏈表 Static Linked List
static_linked_list.png
用數組描述的鏈表,即稱為靜態鏈表
對于線性鏈表,也可用一維數組來進行描述。這種描述方法便于在沒有指針類型的高級程序設計語言中使用鏈表結構。
仍舊有指針型鏈表的優點。