數據結構1-概述
1. 什麼是數據結構
數據結構是研究以什麼方式組織和存儲數據更加有利於後續使用的科學
舉個例子:
一般我們存儲一段文本會使用string,存儲一串文本使用數組string[],但對於複雜關係數據,例如圖1的父子關係數據,用數組進行存儲,例如{“爺爺”, “父親”, “叔叔”, “兒子1”, “兒子2”, “兒子3”},則無法體現數據之間的層級關係,並不合理,因此我們會設計使用樹結構來存儲父子關係,便於後續的增刪改查等操作。
2. 數據結構分類
數據結構一般而言指數據的邏輯結構(與物理結構的區別會在下節說明),使用最廣泛的分類有3種:
- 線性表:元素關係1對1,可細分為順序表、鏈表、隊列、棧
- 樹:元素關係1對n,可細分為普通樹、二叉樹等
- 圖:元素關係n對n
(元素是數據存儲的最小單元,可以是字元、字元串、數字,也可以是結構化數據例如json等等)
3. 數據的邏輯結構&物理結構
數據如何存儲,首先思考如何組織數據,再思考如何實現存儲,因此從執行順序和思考角度上,可將存儲結構分成邏輯結構,和物理結構
- 邏輯結構:按照數據內部元素之間的關係,思考如何組織數據(元素關係包括1對1關係,1對多關係,多對多關係)
- 物理結構:從存儲的可行性,更新和取數便利性出發,思考在物理介質中(一般是記憶體)如何存儲數據,是集中存儲、還是分散存儲
3.1 邏輯結構
關於邏輯結構的說明,可以參見上一節(數據結構分類)
3.2 物理結構
集中存放 | 分散存放 | |
存儲方式 | 順序存儲結構 | 鏈式存儲結構 |
一般底層實現形式 | 數組 | 鏈表 |
優點 | 遍歷快 | 插入/刪除快,空間利用率高 |
缺點 | 插入/刪除慢,空間利用率低 | 遍歷慢 |
適用場景 | 頻繁查詢,例如商品檢索系統 | 頻繁更新,例如店鋪管理系統 |
4. 數據結構與演算法的關係&區別
簡單點說:
- 數據結構:一門研究如何組織和存儲數據的科學
- 數據演算法:一門研究如何處理和分析數據的科學