1.adt描述
抽象資料型別(abstract data type,adt)是指乙個數學模型以及定義在該模型上的一組操作。
adt 抽象資料型別名adt 抽象資料型別名其中,資料物件和資料關係的定義用偽**描述,基本操作的定義格式為
基本操作名(參數列)基本操作有兩種引數:賦值引數只為操作提供輸入值;引用引數以&打頭,除可提供輸入值外,還將返回操作結果。
2.常用**語句
(1)預定義常量和型別:
(2)資料結構的表示(儲存結構)用型別定義(typedef)描述。資料元素型別約定為elemtype,由使用者在使用該資料型別時自行定義。//函式結果狀態**
#define true 1
#define false 0
#define ok 1
#define error 0
#define overflow -2
//status是函式的型別,其值是函式結果狀態**
typedef int status
(3)基本操作的演算法都用以下形式的函式描述:
函式型別 函式名(函式引數表) //函式名
3.例子
抽象資料型別三元組triplet的表示和實現
//採用動態分配的順序儲存結構
typedef elemtype *triplet; //由inittriplet分配3個元素儲存空間
//基本操作的函式原型說明
status inittriplet(triplet &t,elemtype v1,elemtype v2,elemtype v3);
//操作結果:構造了三元組t,元素e1,e2和e3分別被賦以引數v1,v2和v3的值
status destroytriplet(triplet &t);
//操作結果:三元組t被銷毀
status get(triplet t,int i,elemtype &e);
//初始條件:三元組t已存在,1
<=i<=3
//操作結果:用e返回t的第i元的值
status put(triplet &t,int i,elemtype e);
//初始條件:三元組t已存在,1
<=i<=3
//操作結果:改變t的第i元的值為e
status isascending(triplet t);
//初始條件:三元組t已存在
//操作結果:如果t的3個元素按公升序排列,則返回1,否則返回0
status isdescending(triplet t);
//初始條件:三元組t已存在
//操作結果:如果t的3個元素按降序排列,則返回1,否則返回0
status max(triplet t,elemtype &e);
//初始條件:三元組t已存在
//操作結果:用e返回t的3個元素中的最大值
status min(triplet t,elemtype &e);
//初始條件:三元組t已存在
//操作結果:用e返回t的3個元素中的最小值
//基本操作的實現
status inittriplet(triplet &t,elemtype v1,elemtype v2,elemtype v3)
status destroytriplet(triplet &t)
status get(triplet t,int i,elemtype &e)
status put(triplet &t,int i,elemtype e)
status isascending(triplet t)
status isdescending(triplet t)
status max(triplet t,elemtype &e)
status min(triplet t,elemtype &e)
抽象資料型別(ADT
說到抽象資料型別,那麼就得先提到資料型別 資料型別指的是乙個值的集合以及定義在這個集合上的一組操作 為什麼要有不同的資料型別呢 當我們計算1 1的時候,只需要很小的儲存空間,但是當我們去計算10000 100000的時候,所需要的空間就會大許多,那麼我們為了去區分這些類別的差異,就有了不同的資料型別...
抽象資料型別(ADT
說到抽象資料型別,那麼就得先提到資料型別 資料型別指的是乙個值的集合以及定義在這個集合上的一組操作 為什麼要有不同的資料型別呢 當我們計算1 1的時候,只需要很小的儲存空間,但是當我們去計算10000 100000的時候,所需要的空間就會大許多,那麼我們為了去區分這些類別的差異,就有了不同的資料型別...
ADT(抽象資料型別) 佇列
佇列是先進先出,直接和排隊模擬即可,佇列的實現較堆疊要麻煩一些,比如用靜態陣列來實現佇列,每次移除資料後原來的位置就空起了,使用乙個指標front指向佇列頭部,用另乙個指標rear指向佇列尾部,比如乙個5個元素的陣列,刪除3個元素後,本來陣列還可以繼續存入3個元素,但那3個元素則無法再次利用了。為此...