棧和佇列的表示及實現

2021-10-01 04:04:02 字數 1852 閱讀 8339

鏈棧的表示

佇列的基本表示及操作

鏈佇列一般線性表

棧邏輯結構:一對一

邏輯結構:一對一

儲存結構:順序表、鍊錶

儲存結構:順序表、鍊錶

運算規則:隨機訪問

運算規則:後進先出(lifo)

adt stack 

資料關係:

r1 =

約定an端為棧頂,a1端為棧底。

基本操作

}adt stack

利用一組位址連續的儲存單元依次存放自棧底到棧頂的資料元素。棧底一般在低位址端。

#define maxsize 100

typedef

struct

sqstack;

//構造乙個空棧

status initstack

(sqstack & s)

//若棧為空,返回true;否則返回false

status stackempty

(sqstack s)

/**

1.判斷是否棧滿,

2.元素e壓入棧頂,

3.棧頂指標加1

*/status push

(sqstack &s,selemtype e)

/**

1.判斷是否棧空,

2.取出棧頂元素e,

3.棧頂指標減1

*/status pop

(sqstack &s,selemtype &e)

typedef

struct stacknode stacknode,

*linkstack;

linkstack s;

status push

(linkstack &s,selemtype e)

status pop

(linkstack &s,selemtype &e)

#define maxsize 100

typedef

struct

sqqueue;

status initqueue

(sqqueue &q)

int

queuelength

(qsqueue q)

status enqueue

(sqqueue &q,qelemtype e)

status dequeue

(sqqueue &q,qelemtype &e)

#define maxsize 100

typedef

struct qnodeqnode.

*queueptr;

typedef

struct

linkqueue;

status initqueue(linkqueue &q)
status enqueue(linkqueue &q,qelemtype e)
status dequeue(linkqueue &q,qelemtype &e)

C 棧和佇列 ADT 棧的表示和實現

棧底指標是不動的,插入,刪除都是對棧頂指標進行移動 基本操作的實現 棧的構造,判空,插入,刪除,清空,銷毀,列印 棧的定義 typedef structsqstack 棧的基本操作 操作構造乙個空棧s。initstack s 初始條件 棧s已存在。操作結果 棧s被銷毀。destroystack s ...

棧和佇列的陣列表示

棧和佇列 都是動態集合,且在其上進行delete操作所移除的元素都是預先設定的。在棧 stack 中,被刪除的都是最近插入的元素 棧實現的是一種後進先出的策略。類似的,在佇列中,被刪除的總是在集合中存在時間最長的那個元素 佇列實現的是一種先進先出的策略。在計算機上實現棧和佇列有好幾種有效方式。本文將...

第三章 1 棧和佇列 棧的表示及實現

前言 棧和佇列 是兩種重要的線性結構。從資料結構角度來看,棧和佇列也是線性表,它的特殊性在於其操作是線性表的子集,是操作受限的線性表,因此可以稱作限定性的資料結構。限定性 如 人為的規定線性表只能從表尾插入和刪除結點資料元素,那麼這樣的線性表就是棧 目錄 1 棧 2 棧的應用舉例 3 棧與遞迴的實現...