常見的數據結構包括數組、鏈表、棧、隊列、哈希表、樹、堆、圖,它們可以從“邏輯結構”和“物理結構” 兩個維度進行分類。
邏輯結構:線性與非線性
邏輯結構揭示了數據元素之間的邏輯關係。在數組和鏈表中,數據按照一定順序排列,體現了數據之間的線 性關係;而在樹中,數據從頂部向下按層次排列,表現出“祖先”與“後代”之間的派生關係;圖則由節點 和邊構成,反映了複雜的網絡關係。
線性結構比較直觀,指數據在邏輯關係上呈線性排列;非線性結構則相反,呈非線性排列。
‧ 線性數據結構:數組、鏈表、棧、隊列、哈希表,元素之間是一對一的順序關係。
‧ 非線性數據結構:樹、堆、圖、哈希表。
非線性數據結構可以進一步劃分爲樹形結構和網狀結構。
‧ 樹形結構:樹、堆、哈希表,元素之間是一對多的關係。
‧ 網狀結構:圖,元素之間是多對多的關係。
物理結構:連續與分散
當算法程序運行時,正在處理的數據主要存儲在內存中。內存想象成一個巨大的 Excel 表格,其中每個單元格都可以存儲一定大 小的數據。
系統通過內存地址來訪問目標位置的數據。計算機根據特定規則爲表格中的每個單元格分配編號,確保每個內存空間都有唯一的內存地址。有了這些地址,程序便可以訪問內存中的數據。
內存是所有程序的共享資源,當某塊內存被某個程序佔用時,則無法被其他程序同時使用了。因此在數據結 構與算法的設計中,內存資源是一個重要的考慮因素。
物理結構反映了數據在計算機內存中的存儲方式,可分爲連續空間存儲(數組)和分散空間 存儲(鏈表)。
所有數據結構都是基於數組、鏈表或二者的組合實現的。
.基於數組可實現:棧、隊列、哈希表、樹、堆、圖、矩陣、張量(維度 ≥ 3 的數組)等。
‧ 基於鏈表可實現:棧、隊列、哈希表、樹、堆、圖等。
基於數組實現的數據結構也稱“靜態數據結構”,這意味着此類數據結構在初始化後長度不可變。相對應地, 基於鏈表實現的數據結構也稱“動態數據結構”,這類數據結構在初始化後,仍可以在程序運行過程中對其長 度進行調整。
數據結構是在計算機中組織與存儲數據的方式。
基本數據類型提供了數據的“內容類型”,而數據結構提供了數據的“組織方式”。