數據結構的三個方面:
數據的邏輯結構:
線性結構:線性表、棧、隊
非線性結構:樹形結構、圖形結構
數據的存儲結構:
順序存儲、鏈式存儲
數據的運算:插入、刪除、修改、查找、排序
什么叫數據的邏輯結構?
表示數據元素之間的邏輯關系,即從邏輯關系上描述數據,它與數據的存儲無關,是獨立於計算機的。
集合結構:僅同屬一個集合
線性結構:一對一 線性
樹結構:一對多 非線性
圖結構:多對多 非線性
什么叫數據的物理結構?
物理結構亦稱存儲結構,是數據的邏輯結構在計算機存儲器內的表示(或映像)。它依賴於計算機。
存儲結構詳解:
“數據元素”的映像
“關系”的映像
兩種不同的存儲結構:順序存儲結構、鏈式存儲結構
什么是數據的運算?
在數據的邏輯結構上定義的操作算法。它在數據的存儲結構上實現。
最常用的數據運算有5種:插入,刪除,修改,查找,排序
抽象 數據類型(Abstract Data Type)
數據:數據是指能夠輸入到計算機當中,且能被計算機接受和處理的,字符,圖形,圖像,音頻,視頻等的總稱。
數據類型:是一個值的集合和定義在該值集上的一組操作的總稱。
int、string、float、double
這些數據類型均包含兩個內容:
一是數據對象集,它確定了一個取值范圍,就像書店里的每一本書一樣。
另一個是作用域數據對象集上的操作集,也就是僅作用於相應的數據元素集合上,就像從書架上找書和向書架上插入新書這些操作僅對應於相應書架一樣。
這兩個內容在c語言中是獨立處理的,而在面向對象程序設計語言中,則是將兩者封裝在一起,稱為類。
抽象數據類型:由用戶定義,用以表示應用問題的數據模型。它由基本的數據類型構成,並包括一組相關的服務(或稱操作)。
它與數據類型實質上是一個概念,但其特征是使用與實現分離,實行封裝和信息隱蔽(獨立於計算機)。
定義抽象數據類型“復數”
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的和值。
抽象數據類型可以通過固有的數據類型來表示和實現
整型、字符型、浮點型