定義:線性表是由n個具有相同特性的資料元素組成的有限序列,表中每個元素具有相同元素。邏輯上為連續的線性結構。
常見的線性表:順序表,鍊錶、棧、佇列、字串
線性表根據物理儲存方式分為:順序表和煉表
線性表在邏輯上是線性結構,在物理上並不是連續的,線性表在物理上儲存時,通常是以陣列和鏈式結構的形式儲存。
動態陣列:底層仍然使用陣列,但支援動態擴容 不屬於動態資料結構。
動態資料結構:需要多少空間,就開闢多少空間。eg:鍊錶 ; 模擬 火車
邏輯上連續,物理上不一定連續
線性表分析:
1.不能直接使用node 節點,客戶端只需關心資料的儲存而不關心節點間的關係,因此將node 作為內部類隱藏起來
linkedlist: 相當於火車 ,由多個節點組成具體來連線每個節點,客戶端使用此類 ;
node: 相當於火車節點,負責存放資料
優化點: 由於在任意位置插入節點時需要判斷是否是頭節點的插入,因為頭節點沒有前驅節點。引入乙個dummyhead,虛擬頭節點。保證任意存放資料的節點都一定會有前驅節點。
客戶端:不能直接使用node節點
1.3.1順序表特性
優點:便於隨機訪問
缺點:不便於插入、刪除(末尾插入或刪除比較方便)
場景:需要大量訪問元素,尾刪,尾插較多時使用順序表。
1.3.2 順序表的一些oj
快慢指標找中間節點
package ds.findk;
/** * @name: 找倒數第k個節點
* @author:zyj
* @date:2019-04-29-16:07
* @description: 利用快慢指標找倒數第k個節點
1.4.1 單鏈表
單鏈表指的是每個節點只保留乙個引用,該引用指向當前節點 的下乙個節點,沒有引用指向頭節點,尾結點的next指向空。
單鏈表分析:
優點:1,刪除與插入效率高
2,有元素才會分配結點,不會有閒置的結點
3,長度不固定,儲存空間不需要連續
缺點:不支援隨機查詢,只能從前驅結點找到後繼結點而無法從後繼結點找到前驅結點
1.4.2 雙向鍊錶
每個結點保留兩個引用 prev和next ,prev儲存前驅結點,next儲存後繼結點。
雙鏈表分析:
優點:刪除指定所有下的節點效能更好
缺點:新增,刪除節點時的指標維護成本較大
1.4.3 迴圈鍊錶
迴圈鍊錶是一種收尾相接的鍊錶,將單鏈表的尾結點的後繼指向頭節點,就形成了迴圈鍊錶
特點:從鍊錶的任意乙個節點出發都可以找到其他所有節點。
迴圈鍊錶可以解決「約瑟夫環問題」
順序表和煉表
1.名詞解釋 資料 對客觀事物的符號表示 資料元素 資料的基本單位,可由若干個資料項組成 資料項 資料的不可分割的最小單位 資料物件 性質相同的資料元素的集合,是資料的子集 資料結構 相互之間存在特定關係的資料元素的集合 關係描述資料元素之間的邏輯關係 物理結構 儲存結構 資料結構在計算機中的表示 ...
c 順序表和煉表
這節來說下順序表和煉表 1 集合中必存在唯一的 第乙個元素 2 集合中必存在唯一的 最後乙個元素 3 除第乙個元素外,其他的元素都只有乙個後繼 4 除最後乙個元素外,其他的元素都只有乙個前驅 把線性表中的節點按照邏輯次序儲存在一組連續的位址單元中,在計算機中以陣列的形式儲存的線性表。在順序表中每個節...
順序表和煉表(Sqlist Linklist)
眾所周知,線性表是乙個比較靈活的儲存空間,其中有兩種儲存格式 線性表和鍊錶,下文盡量詳細地進行整理二者的特點和區別。順序表,顧名思義,就是用連續的空間儲存當下得到的資料。順序鏈性錶用sqlist稱呼,提到sqlist就指的是順序鏈性表 其特點在於 1.儲存空間是連續的,可以通過下標找到前後成員的值 ...