從零開始JAVA資料結構學習筆記(一)
線性表定義:
線性表:由零個或多個元素組成的有限序列
如果一個資料元素序列滿足:
(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)。
空間效能
順序結構:預分配空間,有溢位問題。
單連結串列:無
相關文章
- python Scrapy 從零開始學習筆記(一)Python筆記
- PHP從零開始系列一(學習筆記):前言PHP筆記
- 從零開始學Electron筆記(一)筆記
- 《從零開始學Swift》學習筆記(Day 25)——類和結構體定義Swift筆記結構體
- 《從零開始學Swift》學習筆記(Day 40)——解構函式Swift筆記函式
- python Scrapy 從零開始學習筆記(二)Python筆記
- PHP從零開始系列二(學習筆記):序言PHP筆記
- 從零開始netty學習筆記之BIONetty筆記
- 從零開始netty學習筆記之protobufNetty筆記
- 《從零開始學Swift》學習筆記(Day 30)——選擇類還是結構體呢?Swift筆記結構體
- 從零開始學Electron筆記(二)筆記
- 從零開始學Electron筆記(七)筆記
- 從零開始學Electron筆記(六)筆記
- 從零開始學Electron筆記(三)筆記
- 從零開始學Electron筆記(四)筆記
- 從零開始學Electron筆記(五)筆記
- 《從零開始學Swift》學習筆記(Day 11)——資料型別那些事兒?Swift筆記資料型別
- 《從零開始學Swift》學習筆記(Day 24)——列舉Swift筆記
- 《從零開始學Swift》學習筆記(Day 16)——字典集合Swift筆記
- 資料結構學習筆記(一) (轉)資料結構筆記
- 《從零開始學Swift》學習筆記(Day 37)——預設建構函式Swift筆記函式
- 《從零開始學Swift》學習筆記(Day 39)——建構函式過載Swift筆記函式
- 從零開始學五筆(一):概述
- 資料結構學習筆記資料結構筆記
- 《從零開始學Swift》學習筆記(Day 51)——擴充套件建構函式Swift筆記套件函式
- 《從零開始學Swift》學習筆記(Day43)——建構函式繼承Swift筆記函式繼承
- 《從零開始學Swift》學習筆記(Day 59)——程式碼排版Swift筆記
- 《從零開始學Swift》學習筆記(Day 45)——重寫方法Swift筆記
- 《從零開始學Swift》學習筆記(Day 36)——靜態方法Swift筆記
- 從零開始學java(一)認識javaJava
- 從零開始學資料結構和演算法(一)冒泡與選擇排序資料結構演算法排序
- 《從零開始學Swift》學習筆記(Day 49)——擴充套件宣告Swift筆記套件
- 《從零開始學Swift》學習筆記(Day 44)——重寫屬性Swift筆記
- 《從零開始學Swift》學習筆記(Day 46)——下標重寫Swift筆記
- 《從零開始學Swift》學習筆記(Day 41)——類的繼承Swift筆記繼承
- 《從零開始學Swift》學習筆記(Day 29)——訪問級別Swift筆記
- 《從零開始學Swift》學習筆記(Day 32)——計算屬性Swift筆記
- 《從零開始學Swift》學習筆記(Day 33)——屬性觀察者Swift筆記