線性結構(順序儲存和鏈式儲存)和非線性結構的特點及區別
1. 線性結構
特點:除第一個元素只有一個“後繼”和最後一個元素只有一個“前驅”,其它每個元素只有一個“前驅”元素和一個“後繼”元素。
常見的線性結構有: 陣列、連結串列、棧以及佇列。注意:棧和佇列本身不是一種資料結構,可通過陣列或連結串列實現。
1.1 線性結構又分為順序儲存和鏈式儲存
線性結構又分為順序儲存和鏈式儲存,順序儲存:各個元素儲存的地址空間連續,邏輯相鄰的元素在實體記憶體中也相鄰,如陣列;
鏈式儲存:各個元素儲存在任意的地址空間,邏輯相鄰的元素在實體記憶體中沒有聯絡,如連結串列。
1.2 順序儲存和鏈式儲存的區別
1.2.1 順序儲存
優點:① 因為各個元素是連續儲存,而且當元素型別一致時佔用空間大小一致,所以可以直接通過首元素地址計算
某個元素的記憶體地址,從而訪問特定元素效率很高
② 對於有序陣列,還可以通過二分查詢提高元素查詢的速度
缺點:① 由於順序儲存的特點,所以在刪除或插入元素後需要移動其它元素使得整體的儲存空間依然是連續的,
所以刪除、插入元素效率低,如下圖。
② 由於元素儲存空間連續,所以當有大資料時,較難分配一塊連續的大記憶體空間。
1.2.2 鏈式儲存
優點:① 由於鏈式儲存的特點,刪除或插入節點很方便,不需要移動其它元素,改變元素“連線”關係即可,
所以刪除、插入元素效率高,如下圖。
缺點:① 因為儲存的任意性,只能通過前一個元素訪問下一個元素,每一次訪問元素都從頭節點開始遍歷,
所以訪問特定元素或查詢元素效率低。
2. 非線性結構
特點:每個元素可以和多個元素“連線”。
常見的非線性結構:二維陣列、樹和圖。
相關文章
- 線性表之順序儲存結構
- 11 線性表的順序儲存結構
- 線性表之鏈式儲存結構
- 資料結構(線性錶鏈式儲存)的幾個基本操作資料結構
- 從零開始學資料結構和演算法(二)線性表的鏈式儲存結構資料結構演算法
- 資料結構線性表的鏈式儲存結構(單連結串列)的表示及其基本操作資料結構
- 資料結構知否知否系列之 — 線性表的順序與鏈式儲存篇(8000 多字長資料結構
- 【資料結構】二叉樹(順序儲存、鏈式儲存)的JAVA程式碼實現資料結構二叉樹Java
- 線性表的順序儲存C++程式碼C++
- 作用域、連結屬性和儲存型別型別
- 【資料結構——圖和圖的儲存結構】資料結構
- 線性表的順序儲存C++程式碼實現C++
- C#資料結構-二叉樹-順序儲存結構C#資料結構二叉樹
- 資料結構 - 線性表 - 順序表資料結構
- 儲存結構
- 【PHP資料結構】圖的概念和儲存結構PHP資料結構
- 考研資料結構-線性表-順序表資料結構
- 佇列的鏈式儲存結構的實現佇列
- JanusGraph -- 儲存結構
- CentOS 儲存結構CentOS
- etcd MVCC 儲存結構及流程MVC
- 8-佇列的鏈式儲存結構的操作佇列
- 第3章 順序表的鏈式儲存
- 線性表的順序儲存-順序表,對“突然的自我”的否定,對自我的揚棄
- MySQL的物理儲存結構和session過程MySqlSession
- php圖的儲存結構PHP
- 利用泛型模擬棧結構實現內部鏈式儲存結構泛型
- @資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》資料結構C++
- 資料結構知識點--儲存結構與邏輯結構資料結構
- MySQL的varchar儲存原理:InnoDB記錄儲存結構MySql
- MySQLInnoDB儲存引擎(一):精談innodb的儲存結構MySql儲存引擎
- Java HashMap原理及內部儲存結構JavaHashMap
- 圖(Graph)——圖的儲存結構
- 儲存器的層次結構
- redis 儲存結構原理 2Redis
- HBase 資料儲存結構
- InnoDB記錄儲存結構
- 資料結構與演算法 | 線性表 —— 順序表資料結構演算法