1 3抽象資料型別的表示與實現

2021-07-08 15:45:51 字數 2257 閱讀 6232

記得大二的時候學習嚴蔚敏大神的《資料結構》,滿本書的抽象結構,抽象這個,抽象那個,直接整蒙了。最困難的就是概念本來就晦澀難懂,而且書裡面也沒有可以直接執行的**,真頭疼。好在最近發現高一凡編寫的《資料結構演算法解析》,裡面是全是按照嚴奶奶的《資料結構》一書編排的**。終於可以把資料結構全部轉化成**的形式了,趁著現在有時間再把資料結構以**的形式梳理一遍,再提高一點點能力。 今天覆習了資料結構第一章緒論,借鑑高一凡的《資料結構演算法解析》,用**實現了抽象資料型別的表示和實現,還有複習了引用&的用法。至於第一章中講到的時間複雜度和空間複雜度,大概看來一下。

注意:

1. 抽象資料型別(abstract data type ,adt)是指乙個數學模型以及定義在該模型上的一組操作(教材p7)。當然這個抽象資料型別也就是嚴奶奶寫的資料結構的精髓----拋開具體的資料型別來講解資料結構。

2.其中教材p9中的例1-6就是乙個抽象資料型別三元組定義的例子,這個定義可以看出抽象資料型別是如何定義的。當然這些都不是重點,這些我們《資料結構》開課的時候都學過,重點是如何用具體的**來表示和實現抽象資料型別。

3.還要講解幾個**中的概念:1 )資料結構的表示(儲存結構)用型別定義(typedef)描述,例 typedef int  status  //該語句的意思是在程式int的另一別名是status,用status表示int;2)在**中方法的形參表中,以&打頭的引數是c++的引用,引用型別的變數,其值若在函式張發生變化,則變化的值會帶回主調函式中;3)程式中資料元素型別約定為elemtype。

**實現抽象資料型別的八個函式(教材p9)

#include#include#include#include//其中定義overflow為3

#define ok 1

#define error 0

typedef int status;//status表示函式的型別,其值是函式的結果狀態碼

typedef int elemtype;//定義抽象資料型別elemtype在本程式中為整型s in

typedef elemtype *triplet;//由inittriplet分配3個元素儲存空間,triplet型別是elemtype型別的指標,存放elemtype型別的位址

status inittriplet(triplet &t,elemtype v1,elemtype v2,elemtype v3)

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)

status destroytriplet(triplet &t)

void printt(triplet t)//依次輸出三元組的值

void printe(elemtype e)//輸出元素的值

void main()

i=put(t,2,6);//將三元組t的第2個值改為6

if(i==ok)

i=isascending(t);//測試公升序函式

printf("呼叫測試公升序的函式後,i=%d(0:否 1:是)\n",i);

i=isdescending(t);//測試降序的函式

printf("呼叫測試降序的函式後,i=%d(0:否 1:是)\n",i);

if(i=max(t,m)==ok)

if(i=min(t,m)==ok)

destroytriplet(t);//函式也可以不帶返回值

printf("銷毀t後,t=%u\n",t);

最後再展現下高一凡所編寫的《資料結構演算法分析》中關於&引用的介紹。引用型別&是c++語言特有的。引用型別的變數,其值若在函式中發生變化,則變化的值會帶回主調函式中。下面這個程式表現了引用型變數和非引用型變數的區別。

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

各種字元的定義 如下 liyuechao 2014.8.7 c1.h 檔案名字 include include include malloc 等 include int max等 include eof z或f6 null include atoi include eof include floor...

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

typedef elemtype triplet 由inittriplet分配3個元素儲存空間 triplet型別是elemtype型別的指標,存放elemtype型別的位址 status inittriplet triplet t,elemtype v1,elemtype v2,elemtype ...

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

預定義常量和型別 函式結果狀態 define true 1 define false 0 define ok 1 define error 0 define ineasible 1 define overflow 2 status是函式的型別,其值是函式結果狀態 typedef int status...