今天,正式開啟深入學習數據結構之旅。
1.數據、數據元素和數據對象
數據是信息的載體,是對客觀事物的符號表示,是所能輸入到計算機中並被計算機程序識別和處理的符號的集合。
數據元素是數據的基本單位。在計算機程序中數據元素常作為一個整體進行考慮和處理。數據元素又可以稱為元素、結點、記錄。
一個數據元素可以由若干個數據項組成。數據項還可以區分為組項和基本項,組項可以由更小的組項和基本項構成,而基本項則是具有獨立含義的最小標志單位。
數據元素的集合構成一個數據對象,它是針對某種特定的應用。數據結構一書中所說的數據對象不是面向對象系統中所指的數據對象,后者還需要考慮對象所包括的操作。
2.數據結構
(1)數據結構是指某一數據對象中所有數據元素間的關系。完整定義為:
數據結構 = {D,R}
D表示某一數據對象,R表示該集合中所有數據元素間關系的有限集合。
(2)數據結構是數據元素間的邏輯關系,即數據的邏輯結構。它是具體問題的抽象模型,與數據的存儲無關。
(3)數據的存儲結構是數據的邏輯結構在計算機內的表示,它依賴於數據的邏輯結構。
(4)作用於數據結構上的操作是討論數據結構的另一個重要方面,操作的實現依賴於相應的存儲結構。
3.數據邏輯結構的分類
線性結構、集合結構、樹形結構、圖結構
它們中數據元素之間的關系分別是一對一、空、一對多、多對多。
集合結構的實現往往依賴於其他邏輯結構的存儲表示。
4.數據存儲結構的分類
順序存儲、鏈式存儲、索引存儲、散列存儲
后兩者在外存中,索引存儲通過建立索引表來組織所有數據元素,散列存儲是通過散列函數直接把數據記錄的關鍵碼映射為該元素的存放地址。
5.數據類型與抽象數據類型(ADT)
數據類型是一個值的集合和定義在這個值集合上的一組操作的總稱。包括基本數據類型和構造數據類型
基本數據類型可以看做是計算機中已經實現的數據結構。例如C語言中的字符型(char)、整形(int)、浮點型(float)、雙精度型(double)、無值(void),可以直接使用由它們定義的變量和相應的操作。
構造數據類型由基本數據類型或構造數據類型組成,在C語言中用typedef struct定義。
數據類型和數據結構的共同點在於它們的抽象性。
數據類型和數據結構之間的區別在於數據結構本身是一種數據組織形式和使用形式,通過把它定義成數據類型才能在計算機上使用。從這個意義上看,數據類型是從編程者使用的角度可由計算機實現的數據結構。
數據類型本身不能參與運算,必須定義屬於某種數據類型的變量,使用這些變量才能參與運算。
抽象數據類型(ADT)是一種構造數據類型。特征:信息隱蔽、數據封裝、使用與實現分離。
上述參考自:數據結構精講與習題詳解:考研輔導與答疑解惑/殷人昆編著.--北京:清華大學出版社,2012.10
