從零開始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筆記(一)筆記
- python Scrapy 從零開始學習筆記(二)Python筆記
- PHP從零開始系列二(學習筆記):序言PHP筆記
- 從零開始學Electron筆記(六)筆記
- 從零開始學Electron筆記(七)筆記
- 從零開始學Electron筆記(二)筆記
- 從零開始學Electron筆記(四)筆記
- 從零開始學Electron筆記(五)筆記
- 從零開始學Electron筆記(三)筆記
- 資料結構學習筆記資料結構筆記
- 從零開始學五筆(一):概述
- 資料結構學習筆記--棧資料結構筆記
- 資料結構學習筆記1資料結構筆記
- 從零開始學Python:第九課-常用資料結構之字串Python資料結構字串
- 從零開始學資料結構和演算法(一)冒泡與選擇排序資料結構演算法排序
- 從零開始構建並編寫神經網路【學習筆記】[2/2]神經網路筆記
- 從零開始學Python:第十一課-常用資料結構之列表Python資料結構
- 資料結構學習筆記-堆排序資料結構筆記排序
- 從零開始學Java,如何拿高工資?Java
- 資料結構 第二章(學習筆記一)資料結構筆記
- 資料結構和演算法-學習筆記(一)資料結構演算法筆記
- 從零開始學習laravelLaravel
- 從零開始學習KafkaKafka
- 【從零開始學習 MySql 資料庫】(2) 函式MySql資料庫函式
- 大資料學習路線(自己制定,從零開始)大資料
- 從零開始構建並編寫神經網路---Keras【學習筆記】[1/2]神經網路Keras筆記
- 從零開始學Python:第十二課-常用資料結構之元組Python資料結構
- 從零開始學習機器學習機器學習
- 資料結構——並查集 學習筆記資料結構並查集筆記
- 2.1資料結構學習筆記--佇列資料結構筆記佇列
- 從零開始學習時空資料視覺化(序)視覺化
- 從零開始學習開發人工智慧(一)人工智慧
- 從零開始機器學習機器學習
- 從零開始學Python—第六課:迴圈結構Python
- Java學習筆記:資料結構之線性表(雙向連結串列)Java筆記資料結構
- 【教程】如何從零開始構建深度學習專案?深度學習