從零開始JAVA資料結構學習筆記(一)

奮鬥的runnoob發表於2019-03-20

線性表定義:

線性表:由零個或多個元素組成的有限序列
如果一個資料元素序列滿足:
(1)除第一個和最後一個資料元素外,每個資料元素只有一個前區資料元素和一個後繼資料元素;
(2)第一個資料元素沒有前驅資料元素;
(3)最後一個資料元素沒有後繼資料元素。
注意:陣列從0開始計算,線性表從1開始計算;

線性表分支:

(1)順序表:使用順序結構實現的線性表
ps:計算機有兩種基本的儲存結構(物理):順序結構、離散結構
棧記憶體:順序結構 堆記憶體:離散結構順序表
(2)連結串列:使用鏈式儲存結構的線性表
每個儲存節點不僅包含元素本身的資訊(資料域),還包含元素之間的邏輯關係的資訊。即一個節點中包含有直接後繼節點的地址資訊,稱為指標域
單連結串列:只設定一個指標域用以指向其後繼節點。單連結串列
雙連結串列:設定兩個指標域用以指向前驅節點與後繼節點。
雙連結串列
順序結構儲存封裝需要的三個屬性:
1.儲存空間的起始位置,陣列data,它的儲存位置就是線性表儲存空間的儲存位置;
2.線性表的最大儲存容量,陣列長度MAX_SIZE(初始化後一般不變);
3.線性表當前長度;
4.頭結點(一般不儲存任何資料),放在第一個節點之前,其資料與一般沒有意義(可以存放連結串列的長度),並且頭結點不一定是連結串列的必要元素;
5.頭指標,頭指標是指連結串列指向第一個節點的指標,若連結串列有頭結點,則是指向頭結點的指標,其具有標識作用,無論連結串列是否為空,頭指標均不為空,並且頭指標是連結串列的必要元素;
空連結串列:空連結串列
注意:單連結串列儘量不使用for控制迴圈,而是使用“工作指標”的右移

順序儲存結構與單連結串列

空間效能
順序結構:需要一段連續的儲存空間。
單連結串列:任意一塊儲存空間。
時間效能
查詢:順序結構通過下標查詢O(1),單連結串列通過指標後移O(N)。
插入和刪除:順序結構平均移動一半的表長O(N),單連結串列指標後移O(1)。
空間效能
順序結構:預分配空間,有溢位問題。
單連結串列:無

相關文章