數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)筆記003 數(shù)據(jù)抽象

《數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)》
作者: [美]Ellis Horowitz 霍羅維茲
譯者: 朱仲濤
出版社: 清華大學(xué)出版社
ISBN: 9787302186960
豆瓣讀書 中查看本書

數(shù)據(jù)類型

  • 定義:數(shù)據(jù)類型是 數(shù)據(jù)對象施加在數(shù)據(jù)對象上操作 的聚合體。
  • 操作可以是前綴算符,如atoi,或中綴算符,如+。
  • 數(shù)據(jù)對象的表示格式隱藏,提供接口處理數(shù)據(jù)對象。操作接口不變,但卻可以修改表示方法。

抽象數(shù)據(jù)對象

  • 定義:抽象數(shù)據(jù)類型(ADT)中的 數(shù)據(jù)對象和數(shù)據(jù)操作的規(guī)范聲明數(shù)據(jù)對象的表示和數(shù)據(jù)操作的實現(xiàn) 相互分離。
  • C語言并未明顯地提供實現(xiàn)ADT的機制,但仍可利用C語言的現(xiàn)有機制構(gòu)造類似的數(shù)據(jù)類型。
  • 抽象數(shù)據(jù)類型應(yīng)獨立于實現(xiàn)。
  • 常用ADT至少包括以下類別中的一種函數(shù):
  1. 構(gòu)造函數(shù)/創(chuàng)建函數(shù):這類函數(shù)為特定類型創(chuàng)建新實例。
  2. 變換函數(shù):這類函數(shù)也為特定類型創(chuàng)建實例,但通常使用一個或多個其他實例。
    變換函數(shù)與構(gòu)造函數(shù)的差別。
  3. 觀察函數(shù)/報告函數(shù):這類函數(shù)提供數(shù)據(jù)類型的實例信息,但不修改實例。

定義ADT

示例

定義ADT NaturalNumber(摘自《數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)》P16)

解釋

  • 該自然數(shù)抽象數(shù)據(jù)類型,從定義關(guān)鍵字ADT開始,主要內(nèi)容分兩節(jié):數(shù)據(jù)對象成員函數(shù)。
  • 數(shù)據(jù)對象是計算機系統(tǒng)中的整數(shù)類型,但此時并未顯式指明整數(shù)的表示。
  • 定義新的數(shù)據(jù)類型,可能會用到其他數(shù)據(jù)類型的操作。
  • 每個成員函數(shù)的形式為:返回結(jié)果類型 函數(shù)名稱 定義
  • 符號::=的意思是“定義為”。
  • 第一個函數(shù)的名稱是Zero,無參量,返回自然數(shù)0,是構(gòu)造函數(shù)。
  • 函數(shù)Successor(x)返回自然數(shù)序列中x的下一個,是變換函數(shù)。
    如果數(shù)列中不再有后繼元素,即x就是INT_MAX的話,函數(shù)返回INT_MAX。有些程序員這時傾向于返回出錯信息,也可以。

習(xí)題

  1. 為自然數(shù)ADT加上如下成員函數(shù):Predecessor,IsGreater,Multiply,Divide。(前驅(qū),大于,乘法,除法)。
習(xí)題1 -by Cytosine
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容