很多小伙伴在翻開數據結構的第一節(jié)課,聽到的就是一個名為抽象數據類型(Abstract Data Type,ADT)的概念,而有些教材對這個概念的介紹過于書面化,今天小編就來簡單的用比較輕松的方式來介紹一下這個概念吧。
來自課本的介紹(內容截取自百度百科相關詞條)
抽象數據類型( ADT,Abstract Data Type)是指一個數學模型以及定義在此數學模型上的一組操作。它通常是對數據的某種抽象,定義了數據的取值范圍及其結構形式,以及對數據操作的集合。以復數為例,它的抽象數據類型如下:
ADT complex{
數據對象:D={real, image | real∈實數, image∈實數} [3]
數據關系:R={<real,image>} [3]
基本操作: [3]
InitComplex(&C)
操作結果:構造一個復數。
GetReal(C, &real)
初始條件:復數C存在。
操作結果:用real返回復數C的實部。
GetImage(C, &image)
初始條件:復數C存在。
操作結果:用image返回復數C的虛部。
OutputComplex(C)
初始條件:復數C存在。
操作結果:輸出復數C的值。
Add(C1,C2,&C)
初始條件:復數C1,C2存在。
操作結果:用復數C返回復數C1,C2的和。
Sub(C1,C2,&C)
初始條件:復數C1,C2存在。
操作結果:用復數C返回復數C1,C2的差。
Mul(C1,C2,&C)
初始條件:復數C1,C2存在。
操作結果:用復數C返回復數C1,C2的乘積。
Div(C1,C2,&C)
初始條件:復數C1,C2存在。
操作結果:用復數C返回復數C1除以C2的值。
}ADT Complex
小編的介紹
看到上面的抽象數據類型,是不是感覺很抽象?實際上ADT就介紹了三件事情:數據本身,數據與數據之間的關系,以及你能對這些數據進行的操作。以我們的理解,復數的抽象數據類型里面的內容,也就是一個復數應該怎么組成,根據復數的相關知識,我們知道復數有實部和虛部組成,虛部由一個有理數*i組成,所以一個復數應該有存儲一個實部的數據,一個虛部的數據,這也就對應了上面ADT中數據對象的內容,這就是數據本身。
我們知道一個復數的抽象數據類型中有兩個數,一個是實部,一個是虛部,那么實部和虛部的數據有什么關系呢?就是上面的那種關系,也就是實部和虛部組合成一個復數。
關于復數的操作,我們定義在基本操作中,比如我們需要這個數據結構能夠查看實部,查看虛部,復數運算等,都可以定義在這里。
有了這樣的一個抽象數據類型,我們就可以知道怎么去實現一個復數對象,以及這個復數對象需要哪些操作了。(實際上ADT中的操作可以不用全部實現,這樣可以減少自己的開發(fā)量也可以減少代碼量,不過這樣的數據結構只能專屬于這個代碼,并不能通用)
如果小伙伴有接觸過面向對象的相關概念,你會發(fā)現ADT和對象具有很高的相似之處,比如他們都有屬性(數據對象)和對屬性操作的方法(基本操作),ADT中多了數據與數據之間的關系,但這個在對象中也可以進行定義。
小結
以上就是ADT全部內容了,十分遺憾的是關于數據結構和算法的內容本站并沒有收錄相關手冊,不過本站的技術頭條內有很多算法相關的文章,小編也會繼續(xù)給小伙伴分享數據結構相關的知識,希望小伙伴們繼續(xù)關注W3Cschool后續(xù)文章!