資料結構 抽象資料型別 ADT 的表示與實現

2021-07-25 02:28:42 字數 2038 閱讀 8522

1.adt描述

抽象資料型別(abstract data type,adt)是指乙個數學模型以及定義在該模型上的一組操作。

adt 抽象資料型別名adt 抽象資料型別名

其中,資料物件和資料關係的定義用偽**描述,基本操作的定義格式為

基本操作名(參數列)

基本操作有兩種引數:賦值引數只為操作提供輸入值;引用引數以&打頭,除可提供輸入值外,還將返回操作結果。

2.常用**語句

(1)預定義常量和型別:

//函式結果狀態**

#define true 1

#define false 0

#define ok 1

#define error 0

#define overflow -2

//status是函式的型別,其值是函式結果狀態**

typedef int status

(2)資料結構的表示(儲存結構)用型別定義(typedef)描述。資料元素型別約定為elemtype,由使用者在使用該資料型別時自行定義。

(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個元素則無法再次利用了。為此...