線性表基本概念與實現
1.線性表的定義:線性表是具有相同特性資料元素的乙個有限序列
2.線性表的邏輯特性:只有乙個表頭元素,只有乙個表尾元素,表頭元素沒有前驅,表尾元素沒有後繼,除表頭和表尾元素之外,其他元素只有乙個直接前驅,也只有乙個直接後繼。
3.線性表的儲存結構:順序儲存結構(順序表)、鏈式儲存結構(鍊錶)
(1)順序表
定義:把線性表中的所有元素按照其邏輯順序,依次儲存到從指定的儲存位置開始的一塊連續的儲存中間內。
特性:隨機訪問特性、占用連續的儲存空間、作插入操作需要移動多個元素
注:隨機訪問特性即可以隨意訪問任意的元素。儲存分配只能預先進行,一旦分配好了1,在對其操作的過程中始終不變。
(2)鍊錶
定義:每個結點不僅包含所存元素的資訊,還包含元素之間邏輯關係的資訊。
特性:不支援隨機訪問,結點的儲存空間利用率較順序表稍微低一些、鍊錶支援儲存空間的動態分配、鍊錶插入無需移動元素
4. 鍊錶的形式:單鏈表、雙鏈表、迴圈單鏈表、迴圈雙鏈表、靜態鍊錶
(1)單鏈表
在每個結點中除了包含資料域外,還包含乙個指標域,用以指向其後繼結點。
判空方式:帶頭結點的單鏈表:head->next == null
不帶頭結點的單鏈表:head == null
(2)雙鏈表
雙鏈表就是在單鏈表結點上增添乙個指標域,指向當前結點的前驅。(這樣就可以方便的由其後繼來找到前驅,從而實現輸出終端結點到開始結點的資料序列)
判空方式:帶頭結點的雙鏈表:head->next ==null
不帶頭結點的雙鏈表:head==null
(3)迴圈單鏈表
將單鏈表的最後乙個指標域(空指標)指向鍊錶的第乙個結點
判空方式:帶頭結點的迴圈單鏈表:head == head-next
不帶頭結點的迴圈單鏈表: head ==null
(4)迴圈雙鏈表
將中端結點的next指標指向鍊錶中的第乙個結點,將鍊錶中的第乙個結點的prior指標指向終端結點
判空方式:不帶頭結點的迴圈雙鏈表: head == null
帶頭結點的迴圈雙鏈表:head->next == head
或者: head->prior == head
或者: head->next == head && head ->prior == head
或者: head->next == head || head -> prior == head
(5)靜態鍊錶
靜態鍊錶借助一維陣列來實現
注:帶頭結點,頭指標head指向頭結點,頭結點的值域不含任何資訊(僅儲存一些描述鍊錶屬性的資訊,如表長)。不帶頭結點的單鏈表中的頭指標head指向開始結點。
順序表和煉表比較:
(1)基於空間的比較
1)儲存分配方式:
順序表的儲存空間是一次性分配的,鍊錶的儲存空間是多次分配的。
2)儲存密度
順序表的儲存密度=1;鍊錶的儲存密度<1(因為結點有指標域)
(2)基於時間的比較
1)訪問方式
順序表可以隨機訪問,也可以順序訪問(一般只答順序訪問)
鍊錶只能順序訪問
2)插入/刪除時移動元素的個數:
順序表平均移動一半的元素;鍊錶不需要移動元素,只需要修改指標。
資料結構 線性表的基本概念
liner list 線性結構。線性表是由同一型別的資料元素構成的線性結構。實際中,考生資訊表 字串等都屬於線性表 線性表通常可表示為 a1,a2,a3,a4,an n為表長,n 0 時為空表 線性表的抽象資料型別 adt list 資料物件 d 資料關係 r 前驅 後繼 資料操作 線性表初始化 l...
C 資料結構基礎,線性表基本概念
資料結構中的基本概念 資料 程式的操作物件,用於描述客觀事物 如 int,float 資料元素 組成資料的基本單位 資料項 乙個資料元素由若干資料項組成 資料物件 性質相同的資料元素的集合 比如 陣列,鍊錶 對於演算法而言,語言不重要,重要的是思想 演算法是為了解決實際問題而設計的 資料結構是演算法...
線性表概念
線性表的抽象資料型別包括 資料物件集合 和基本操作集合 資料物件集合定義了線性表的資料元素及元素之間的關係,基本操作集合定義了在資料物件上的一些基本操作。1.資料物件集合 線性表的資料物件集合為,每個元素的型別均為datatype,其中除了第乙個元素a1,每乙個元素都有唯一的前驅元素。除了最後乙個元...