1. 為什么學習數據結構(Data Structure)?
- 程序 = 數據結構 + 算法
程序不過就是一個獲取數據、處理數據,展示數據的一個綜合體。
數據結構就是一個裝載數據,并可以對數據進行簡單處理的有效工具。
如何利用合適的結構,處理數據,達到一個空間和時間的平衡,就是我們數據結構所需要學習的內容。
2. 數據結構需要學習的內容
數據結構包含兩方面內容:一是組成集合的數據元素,二是數據元素之間存在的關系。
將上面的內容展開,數據結構需要學習的內容主要有以下幾點:
- 邏輯結構 (logic structure):
- 存儲結構 (store structure)
- 常用操作 (operations)
- 性能 (performance)
- 適用場景
2.1 邏輯結構
- 定義:邏輯結構是指,在邏輯上,數據結構的排列方式。它是給人直觀上的感受。(此處語言待斟酌)
可以用一個二元組表示:
<center> G = (D,R) </center>
D:表示數據元素的有限集合
R:表示在D上關系的有限集合(個人感覺關系可以理解為運算操作)
- 分類:
邏輯結構分類圖.png
- 集合:元素之間除了同屬一個集合沒有其他關系
- 線性結構:數據元素之間有著一對一的關系數據元素之間有一種先后關系,每一個節點最多有一個前驅結點和后驅節點。
- 樹形結構:結構中元素存在著一種一對多的關系,即每一個元素向上與一個元素相連(稱為雙親節點),向下與多個元素相連(孩子節點)
- 圖形結構(網狀結構):元素之間存在著多對多的關系,元素中任意元素都可以有關聯。
2.2 存儲結構:
定義:存儲結構是指數據在計算機中的如何存儲的,也可以稱為物理結構。
分類:順序存儲、鏈式存儲、索引存儲和散列存儲
數據結構-存儲結構分類圖.png
- 順序存儲:數據元素在計算機中是按順序依次存儲
- 鏈式存儲:數據元素額外存儲下一個元素的存儲地址,元素之間在存儲位置上不需要相鄰。
- 索引存儲:在原有數據結構存儲結構基礎上,額外簡歷一張索引表,索引表中每一項由關鍵字和地址組成。
- 散列存儲:通過構造散列函數來確定元素存儲位置。
2.3 運算
- 插入
- 刪除
- 修改
- 計總
- 是否為空
- 是否滿
- 添加
3. 如何學習數據結構
常用數據結構由數組、棧、鏈表、隊列、樹家族、圖
針對每一種數據結構從邏輯結構、存儲結構和運算分析,并通過java語言對各種數據結構進行實現,比較每種數據結構在各種運算上的性能。