數據結構總覽

  數據結構總覽

  數據機構是指相互之間存在一種或者多種特定關係的數據元素的集合。數據結構包括三個組成成分:數據的邏輯結構、數據的存儲結構、數據的運算結構

           數據的邏輯結構:指反映數據元素之間的邏輯關係的數據結構。包括:

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抽象數據類型名

基本操作名(參數表){

初始條件:(初始條件描述)

操作結果:(操作結果描述)

}

       一個數據結構是由數據元素依據某種邏輯聯繫組織起來的。對數據元素間邏輯關係的描述稱爲數據的邏輯結構;數據必須在計算機內存儲,數據的存儲結構是數據結構的實現形式,是其在計算機內的表示;此外討論一個數據結構必須同時討論在該類數據上執行的運算纔有意義。



                                                                                     常用的數據結構:

 數組

在程序設計中,爲了處理方便, 把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數據元素的集合稱爲數組。在C語言中, 數組屬於構造數據類型。一個數組可以分解爲多個數組元素,這些數組元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分爲數值數組、字符數組、指針數組、結構數組等各種類別

是只能在某一端插入和刪除的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據。

隊列

一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行插入操作的端稱爲隊尾,進行刪除操作的端稱爲隊頭。隊列是按照“先進先出”或“後進後出”的原則組織數據的。隊列中沒有元素時,稱爲空隊列。

鏈表

是一種物理存儲單元上非連續、非順序的存儲結構,它既可以表示線性結構,也可以用於表示非線性結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱爲結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。

是包含n(n>0)個結點的有窮集合K,且在K中定義了一個關係N,N滿足 以下條件:
(1)有且僅有一個結點 K0,他對於關係N來說沒有前驅,稱K0爲樹的根結點。簡稱爲根(root)。  (2)除K0外,K中的每個結點,對於關係N來說有且僅有一個前驅。
(3)K中各結點,對關係N來說可以有m個後繼(m>=0)。

圖是由結點的有窮集合V和邊的集合E組成。其中,爲了與樹形結構加以區別,在圖結構中常常將結點稱爲頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關係。

在計算機科學中,堆是一種特殊的樹形數據結構,每個結點都有一個值。通常我們所說的堆的數據結構,是指二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。

散列表

若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上。由此,不需比較便可直接取得所查記錄。稱這個對應關係f爲散列函數(Hash function),按這個思想建立的表爲散列表。


發佈了38 篇原創文章 · 獲贊 15 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章