數據機構是指相互之間存在一種或者多種特定關係的數據元素的集合。數據結構包括三個組成成分:數據的邏輯結構、數據的存儲結構、數據的運算結構。
數據的邏輯結構:指反映數據元素之間的邏輯關係的數據結構。包括:
1 集合結構 (數據結構中的元素同屬一個集合)
2 線性結構(數據結構中的元素一對一的相互關係)
3 樹形結構 (一對多的相互關係)
4 圖形結構 (多對多的相互關係)
邏輯結構可形式化的定義爲(D,R),D是數據元素的集合,R是D上關係的有限數據元素集合。例:設4個元素之間分別爲A,B,C,D,那麼,描述的數據結構可定義爲:D={A,B,C,D},R={AB,BC,CD}。
數據的存儲結構(物理結構):指數據的邏輯結構在計算機存儲空間的存放形式。數據的物理結構是數據結構在在計算機中的表示,包括數據結構中元素的表示及元素間關係的表示。數據的存儲結構包括:
1 順序存儲結構 (把邏輯上相鄰的元素存儲在物理位置相鄰的存儲單元中)
優點:隨機存儲任意元素;
缺點:插入、刪除需大量移動元素;
2 鏈式存儲結構 (把邏輯上相鄰的元素存儲在物理位置可相鄰也可不相鄰的存儲單元中,藉助指針來實現)
優點:插入、刪除只需修改指針域即可;
缺點:不能隨機存儲元素;
3 索引存儲結構 (除建立存儲結點信息外,還建立附加的索引表來標識結點的地址)
4 散列存儲結構 (根據結點的關鍵字直接計算出該結點的存儲地址)
數據的存儲結構實質是它的邏輯結構在計算機存儲器中的實現。
數據的運算結構:算法的設計取決於邏輯結構,而算法的實現依賴於採用的存儲結構。數據的運算是在數據的邏輯結構上定義的操作算法,如檢索、插入、刪除、更新、排序等。這樣設計到很多的算法問題。
不同的數據結構其操作集不同,但下列操作必不可少:
1 結構的生成;
2 結構的銷燬;
3 在結構中查找滿足規定條件的數據元素;
4 在結構中插入新的數據元素;
5 刪除結構中已經存在的數據元素;
6 遍歷操作;
抽象數據類型:一個數學模型以及定義在該模型上的一組操作。抽象數據類型實際上就是對該數據結構的定義。因爲它定義了一個數據的邏輯結構以及在此結構上的一組算法。抽象數據類型可用以下三元組表示:(D,S,P)。D是數據對象,S是D上的關係集,P是對D的基本操作集。
ADT抽象數據類型名{
數據對象:
數據關係:
基本操作:
}ADT抽象數據類型名
基本操作名(參數表){
初始條件:(初始條件描述)
操作結果:(操作結果描述)
}
一個數據結構是由數據元素依據某種邏輯聯繫組織起來的。對數據元素間邏輯關係的描述稱爲數據的邏輯結構;數據必須在計算機內存儲,數據的存儲結構是數據結構的實現形式,是其在計算機內的表示;此外討論一個數據結構必須同時討論在該類數據上執行的運算纔有意義。
常用的數據結構:
數組
棧
隊列
鏈表
樹
圖
堆
散列表