數據結構: 問題的數學模型 數據+結構 數據之間的關係 結構《=》關係
有一個特性相同的數據元素的集合,若是在數據元素之間存在一種或多種特定的關係,則稱爲一個數據結構。帶結構的數據元素的集合 指的是數據元素之間存在的關係 。數據結構是相互之間存在着某種邏輯關係的數據元素的集合。html
形式定義描述 數據結構(data structure) 一個二元組 Data_Structure=(D,S) 其中: D是數據元素的有限集,S 是 D上關係的有限集。node
數據結構是一門討論「描述現實世界實體的數學模型(非數值計算)及其上的操做在計算機中如何表示和實現」的學科。程序員
數值數據,非數值數據數據(data)編程
全部能被輸入到計算機中,且能被計算機處理的符號(數字、字符、圖像、聲音等)的集合。是計算機操做的對象的總稱。是計算機處理的信息的某種特定的符號表示形式。數據結構
是數據(集合)中的一個 「個體」,在計算機中一般做爲一個總體進行考慮和處理。是數據結構中討論的基本單位。例如,整數「5」,字符「N」等。編程語言
是不可再分割的「原子」,它是數據結構中討論的最小單位。又如,描述一個學生的數據元素由多個款項構成,其中每一個款項稱爲一個「數據項」。post
能識別一個或幾個數據元素的數據項。若能起惟一識別做用,則被稱爲「主」關鍵字,不然稱爲「次」關鍵字。spa
具備相同特性的數據元素的集合,是數據的一個子集。如:整數、實數等。.net
數據類型是一個值的集合和定義在此集合上的一組操做的總稱。在用高級程序語言編寫的程序中,必須對程序中出現的每一個變量、常量或表達式,明確說明它們所屬的數據類型。不一樣類型的變量,其所能取的值的範圍不一樣,所能進行的操做不一樣。數據類型是一個值的集合和定義在此集合上的一組操做的總稱。對程序員而言,各類語言中的整數類型都是同樣的,由於它們的數學特性相同。從這個意義上可稱「整數」 是一個抽象數據類型。例如,C 語言中提供的基本數據類型有:整型 int字符型 char實型( C++語言) 浮點型 float雙精度型 double邏輯型 bool ( C++語言)設計
抽象數據類型和數據類型的實質相同,範疇更廣,不侷限於語言中的數據類型。是指一個數學模型以及定義在此數學模型上的一組操做
ADT =(D,S,P)
其中:D是數據對象;S 是D 上的關係集;P 是對D 的基本操做集。
ADT 抽象數據類型名 { 數據對象:〈數據對象的定義〉
數據關係:〈數據關係的定義〉
基本操做:〈基本操做的定義〉
}ADT抽象數據類型名
基本操做的定義格式爲:
基本操做名(參數表)
初始條件:〈初始條件描述〉
操做結果:〈操做結果描述〉賦值參數 只爲操做提供輸入值。
引用參數 以&打頭,除可提供輸入值外還將返回操做結果。
初始條件 描述了操做執行以前數據結構和參數應知足的條件,若不知足,則操做失敗,並返回相應出錯信息操做結果 說明了操做正常完成以後,數據結構的變化情況和應返回的結果。若初始條件爲空,則省略之
數據抽象
用ADT描述程序處理的實體時,強調的是其本質的特徵、其所能完成的功能以及它和外部用戶的接口(即外界使用它的方法)。
數據封裝
將實體的外部特性和其內部實現細節分離,而且對外部用戶隱藏其內部實現細節。
抽象數據類型須要經過固有數據類型(高級編程語言中已實現的數據類型)來實現。
例如,抽象數據類型複數的定義: ADT Complex { 數據對象:D={e1,e2|e1,e2∈RealSet } 數據關係:R1={<e1,e2> | e1是複數的實數部分,e2 是複數的虛數部分} 基本操做: AssignComplex( &Z, v1, v2 ) 操做結果:構造複數Z,其實部和虛部分別被賦以參數 v1和 v2的值。 DestroyComplex( &Z) 操做結果:複數Z被銷燬。 GetReal( Z, &realPart ) 初始條件:複數已存在。 操做結果:用realPart返回複數Z的實部值。 GetImag( Z, &ImagPart ) 初始條件:複數已存在。 操做結果:用ImagPart返回複數Z的虛部值。 Add( z1,z2, &sum ) 初始條件:z1, z2是複數。 操做結果:用sum返回兩個複數z1, z2 的和值。 } ADT Complex
數據結構包括「邏輯結構」 和「物理結構」兩個方面(層次):
面向問題
邏輯結構 是對數據元素之間的邏輯關係的描述,
它能夠用一個數據元素的集合和定義在此集合上的若干關係來表示。
(是數據元素之間客觀存在的,與具體的計算機無關)
從關係或結構分下面四個:
{線性結構},
{非線性結構|樹型結構,集合結構,圖狀結構}
面向計算機
存儲結構是邏輯結構在存儲器中的映象
是邏輯結構在計算機中的表示和實現,故又稱「存儲結構」
「數據元素」的映象
用二進制位(bit)的位串表示數據元素或結點(node)
(321)10 = (501)8 = (101000001)2
「關係」的映象
「關係」 的兩種映象方法:
(表示<x, y>的方法)
順序映象
以x 和 y 之間相對的存儲位置表示後繼關係,存儲結構中只包含數據元素自己的信息
例如:令 y 的存儲位置和 x 的存儲位置之間相差一個預設常量 C,而 C 是一個隱含值,
鏈式映象
以附加信息(指針)表示後繼關係
須要用一個和 x 綁定在一塊兒的附加信息(指針pointer)指示 y 的存儲位置
以「由數據元素 x 的存儲映象和附加的指針合成的結點」表示數據元素。
在不一樣的編程環境中,
存儲結構可有不一樣的描述方法。
當用高級程序設計語言進行編程時,一般可用高級編程語言中提供的數據類型描述之。
1、含義不一樣。
數據的邏輯結構是對數據之間關係的描述,有時就把邏輯結構簡稱爲數據結構。邏輯結構形式地定義爲(K,R)(或(D,S)),其中,K是數據元素的有限集,R是K上的關係的有限集。
數據結構在計算機中的表示(映像)稱爲數據的物理(存儲)結構。它包括數據元素的表示和關係的表示。
2、任務不一樣。
邏輯結構設計的任務是將基本概念模型圖轉換爲與選用的數據模型相符合的邏輯結構。
物理設計的任務是根據具體計算機系統的特色 ,爲給定的數據模型肯定合理的存儲結構和存取方法。
3、反應數據成分不一樣。
邏輯上的數據結構反映成分數據之間的邏輯關係。
物理上的數據結構反映成分數據在計算機內部的存儲安排。數據結構是數據存在的形式。
參考https://zhidao.baidu.com/question/584954501985879805.html?qq-pf-to=pcqq.c2c
https://blog.csdn.net/pengych_321/article/details/50649657