1.1 什麼是數據結構
1.2 基本概念和術語
- 數據(data)是對客觀事物的符號表示,在計算機科學中是指所有能輸入到計算機中並被計算機程序處理的符號的總稱。
- 數據元素(data element)是數據的基本單位,在計算機程序中通常作爲一個整體進行考慮和處理。
- 數據對象(data object)是性質相同的數據元素的集合,是數據的一個子集。
- 數據結構(data structure)是相互之間存在一種或多種特定關係的數據元素的集合。
- 數據元素之間的相互關係稱爲結構(structure),通常有4類基本結構:
(1) 集合:結構中的數據元素之間處理“同屬於一個集合”的關係外,別無其他關係;
(2) 線性結構:結構中的數據元素之間存在一個對一個的關係;
(3) 樹形結構:結構中的數據元素之間存在一個對多個的關係;
(4) 圖狀結構或網狀結構:結構中的數據元素之間存在多個對多個的關係。 - 數據結構在計算機中的表示(又稱映像)稱爲數據的物理結構,又稱存儲結構。
- 抽象數據類型(Abstract Data Type,簡稱ADT)是指一個數學模型以及定義在該模型上的一組操作。
- 抽象數據類型的定義由一個值域和定義在該值域上的一組操作組成。若按其值的不同特性,可細分爲下列三種類型:
- 原子類型(atomic data type)屬原子類型的變量的值是不可分解的。
- 固定聚合類型(fixed-aggregate data type)屬該類型的變量,其值由確定數目的成分按某種結構組成。
- 可變聚合類型(variable-aggregate data type)和固定聚合類型相比較,構成可變聚合類型“值”的成分的數目不確定。
後兩種類型可統稱爲結構類型
- 多形數據類型(polymorphic data type)是指其值的成分不確定的數據類型。
1.3 抽象數據類型的表示和實現
- 抽象數據類型可通過固有數據類型來表示和實現,即利用處理器中已存在的數據類型來說明新的結構,用已經實現的操作來組合新的操作。
1.4 算法和算法分析
1.4.1 算法
- 算法(algorithm)是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個或多個操作;此外,一個算法還具有下列5個重要特性:
(1) 有窮性 一個算法必須總是(對任何合法的輸入值)在執行有窮步之後結束,且每一步都可在有窮時間內完成。
(2) 確定性 算法中每一條指令必須由確切的含義,讀者理解時不會產生二義性。
(3) 可行性 一個算法是能行的,即算法中描述的操作都是可以通過已經實現的基本運算執行的有限次來實現的。
(4) 輸入 一個算法有零個或多個的輸入,這些輸入取自於某個特定的對象的集合。
(5) 輸出 一個算法有一個或多個的輸出,這些輸出是同輸入有着某些特定的關係的量。
1.4.2 算法設計的要求
- 通常設計一個“好”的算法應考慮達到以下目標:
(1) 正確性(correctness)
(2) 可讀性(readability)
(3) 健壯性(robutnes)
(4) 效率與低存儲量需求
1.4.3 算法效率的度量
- 度量一個程序的執行時間通常有兩種方法:
(1) 事後統計的方法
(2) 事前分析估算的方法