抽象資料型別

抽象資料型別

作為抽象資料型別的有理數

编辑

有理數(可以 a/b 格式表示的數,且 a 和 b 都是整數)本來是不能在電腦中表示出來。不過可以合理的抽象資料型別來定義,如下。

構造:使用兩個整數 a 與 b 建立實體,其中 a 為分子,b 為分母。

運算:加法、減法、乘法、除法、乘幕、比較、約分,轉成實數(浮點數)。

要完成整個規格,就要根據資料來定義所有的運算。例如,當兩個有理數 a/b 和 c/d 相乘時,相乘的結果就要定義為 ( a c ) / ( b d )。還有輸入、輸出、先決條件、後置條件,以及對抽象資料型別的各種假定。

堆疊

编辑

介面

编辑

堆疊的抽象資料型別介面,以 C 語法編寫:

long stack_create(); /* 建立新的堆疊實體 */

void stack_push(long stack, void *item); /* 將一個項目堆入堆疊 */

void *stack_pop(long stack); /* 從堆疊頂部取得項目 */

void stack_delete(long stack); /* 刪除堆疊 */

用法

编辑

抽象資料型別可以如下方式使用:

long stack;

struct foo *f;

stack = stack_create(); /* 建立堆疊 */

stack_push(stack, f); /* 將 foo 結構加入堆疊 */

f = stack_pop(stack); /* 從堆疊取得頂部的結構 */

各種實作

编辑

上述堆疊的抽象資料型別,一開始可以使用陣列來實作,然後改用鏈表,而不會傷到任何使用者的代碼。有多少方法可以實作抽象資料型別,取決於程式語言。例如,上述範例可使用 C 編寫一個結構,以及隨同的一組資料結構,可使用陣列或鏈表來存放記錄;當建構子函式返回一個抽象句柄時,就對使用者隱藏了真實的實作過程。

相关推荐

华为/小米路由器怎么选(小米华为路由器选哪个)
迷你椰子树的养殖方法和注意事项
父母必看!详解牛栏和美素佳儿优劣对比,助你明智选择!