第三章 棧與佇列 總結

2021-09-29 07:04:29 字數 2681 閱讀 3284

棧:限定僅在表尾進行插入和刪除操作的線性表

棧的抽象資料型別定義

adt stack

data

棧中元素具有相同型別及後進先出特性,

相鄰元素具有前驅和後繼關係

operation

initstack

前置條件:棧不存在

輸入:無

功能:棧的初始化

輸出:無

後置條件:構造乙個空棧

destroystack

前置條件:棧已存在

輸入:無

功能:銷毀棧

輸出:無

後置條件:釋放棧所占用的儲存空間

push

前置條件:棧已存在

輸入:元素值x

功能:在棧頂插入乙個元素x

輸出:如果插入不成功,丟擲異常

後置條件:如果插入成功,棧頂增加了乙個元素

pop前置條件:棧已存在

輸入:無

功能:刪除棧頂元素

輸出:如果刪除成功,返回被刪元素值,否則,丟擲異常

後置條件:如果刪除成功,棧減少了乙個元素

gettop

前置條件:棧已存在

輸入:無

功能:讀取當前的棧頂元素

輸出:若棧不空,返回當前的棧頂元素值

後置條件:棧不變

empty

前置條件:棧已存在

輸入:無

功能:判斷棧是否為空

輸出:如果棧為空,返回1,否則,返回0

後置條件:棧不變

endadt

順序棧類的宣告

const int max_size=100;

template

class seqstack

順序棧的實現——入棧

操作介面: void push( t x );

template

void seqstack::push ( t x)

順序棧的實現——取棧頂

操作介面: t gettop( );

template

t seqstack::gettop ( )

順序棧的實現——出棧

操作介面: t pop( );

template

t seqstack:: pop ( )

鏈棧的類宣告

template

class linkstack

;~linkstack( );

void push(t x);

t pop( );

t gettop( );

bool empty( );

private:

node *top;

}特殊線性表——佇列

佇列的抽象資料型別定義

adt queue

data

佇列中元素具有相同型別及先進先出特性,

相鄰元素具有前驅和後繼關係

operation

initqueue

前置條件:佇列不存在

輸入:無

功能:初始化佇列

輸出:無

後置條件:建立乙個空佇列

destroyqueue

前置條件:佇列已存在

輸入:無

功能:銷毀佇列

輸出:無

後置條件:釋放佇列所占用的儲存空間

enqueue

前置條件:佇列已存在

輸入:元素值x

功能:在隊尾插入乙個元素

輸出:如果插入不成功,丟擲異常

後置條件:如果插入成功,隊尾增加了乙個元素

dequeue

前置條件:佇列已存在

輸入:無

功能:刪除隊頭元素

輸出:如果刪除成功,返回被刪元素值

後置條件:如果刪除成功,隊頭減少了乙個元素

getqueue

前置條件:佇列已存在

輸入:無

功能:讀取隊頭元素

輸出:若佇列不空,返回隊頭元素

後置條件:佇列不變

empty

前置條件:佇列已存在

輸入:無

功能:判斷佇列是否為空

輸出:如果隊列為空,返回1,否則,返回0

後置條件:佇列不變

endadt

迴圈佇列類的宣告

const int queuesize=100;

template

class cirqueue;

private:

t data[queuesize];

int front, rear;

};迴圈佇列的實現——入隊

template

void cirqueue::enqueue(t x)

迴圈佇列的實現——出隊

template

t cirqueue::dequeue( )

迴圈佇列的實現——讀隊頭元素

template

t cirqueue::getqueue( )

迴圈佇列的實現——佇列長度

template

int cirqueue::getlength( )

鏈佇列類的宣告

template

class linkqueue

;鏈佇列的實現——出隊

template

t linkqueue::dequeue( )

第三章 棧和佇列 總結

知識點 棧是限制僅在表的一端進行插入和刪除運算的線性表又稱為後進先出表 lifo表 插入 刪除端稱為棧頂,另一端稱棧底。表中無元素稱空棧。基本運算有 1 initstack s 構造乙個空棧 2 stackempty s 判棧空 3 stackfull s 判棧滿 4 push s,x 進棧 5 p...

第三章棧與佇列 3

棧 先進後出,lifo 佇列 先進先出,fifo 隊尾,rare,隊頭,front 佇列的抽象資料定義 adt queue 資料關係 r1 基本操作 初始化,銷毀,清空,判空,求長度,獲得隊頭,插入元素,刪除隊頭並返回,呼叫函式 adt queue雙端佇列 端點1 端點2 受限的雙端佇列 佇列的兩種...

第三章 棧和佇列

棧和佇列 一 棧 1 棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表,允許插入和刪除的一端稱為棧頂,另一端稱為棧底,不含任何資料元素的棧稱為空棧。2 在任何時候出棧的元素都只能是棧頂元素,即最後最後入棧者最先出棧。所以棧中元素除了具有線性關係外,還具有後進先出的特性。3 棧的抽象資料型別定義 ...