- 數據:對客觀事物的符號表示,能輸入到計算機中被計算機程序處理的符號的總稱
- 數據元素:組成數據的基本單位。eg 小明的一組信息:年齡,名字,學號,身高
- 數據項:數據元素是有若干數據項組成的,數據項是數據不可分割的最小單位 eg:小明的身高/年齡
- 數據結構:有一種或多種特定關係的數據元素的集合。eg 小明和其班上的同學的統計信息表
二元組,Data_Structure=(D,S),D是數據元素的集合,S是D上關係的集合。
eg D={k1,k2,k3},S={(k1,k2),(k2,k3)}
上述數據結構的定義僅是對操作對象的一種數學描述。結構中的關係描述的是數據元素的邏輯關係,因此又稱爲數據的邏輯結構。然而,討論數據結構是爲了在計算機中實現對他的操作,因此還需研究如何在計算機中表示它。所以數據結構包含以下的三個方面。
- 邏輯結構:指數據元素之間的關係。
- 存儲結構:指數據元素和邏輯關係在計算機中的存儲映像和實現。包括數據元素的存儲表示和數據元素之間關係的存儲表示。
- 數據的運算:就是施加於數據的操作,如查找、添加、修改、刪除等。在數據結構中運算不僅僅實加減乘除這些算術運算,它的範圍更爲廣泛,常常涉及算法問題。
舉例:線性表的初始化、查找、插入、刪除操作等 - 邏輯結構和存儲結構的關係:①存儲結構是邏輯結構用計算機語言的實現 ②邏輯結構是數據結構的抽象,存儲結構是數據結構的實現,二者結合起來建立了數據元素之間的結構關係。
那麼問題來了,到底怎樣描述存儲結構呢?
我們藉助高級程序語言的數據類型(抽象數據類型)來描述存儲結構
以c爲例
- 數據類型:一個值的集合+一組操作。 eg int型,其值型爲某個區間的整數,定義在其上的操作爲加減乘除取模等操作。
- 抽象數據類型:一個數學模型+一組操作
那麼什麼是抽象數據類型呢?
抽象數據類型和數據類型本質上是一個概念。
如所有高級語言中都有"整型"數據類型,它們的實現方法可以各自不同,但對程序員而言,它們是"相同"的。程序員使用它們時僅需瞭解它們的數學特性,而不需要了解它們在語言中是如何實現的。換句話說,各種語言中實現的是同一個"整數類型",而這個"整數類"的定義僅對"整數的數學特性"有明確規定。可稱這個"整數類型"爲"抽象數據類型"。因此,抽象的意義在於數據類型的數學抽象特性。
- 一個抽象數據模塊包括定義、表示、實現
- 定義: 三元組(D,S,P)
D是數據對象,S是D上的關係集,P是對D的基本操作集。
ADT 抽象數據類型名{
數據對象:
數據關係:
基本操作:
操作名(參數表) 參數:賦值參數
初始條件 : 引用參數(以&打頭,返回操作結果)
操作結果:
}ADT 抽象數據類型名 - 表示、實現:通過處理器以存在的數據類型表示和實現
以下用c代碼具體實現抽象數據類型的表示和實現,也是描述數據的存儲結構和數據的運算