用兩個棧模擬佇列

2021-07-23 15:27:33 字數 1401 閱讀 4108

:本文參考了嚴蔚敏的《 資料結構》。

由於佇列先進先出,而棧後進先出,用兩個棧就可以模擬佇列

#include

using

namespace std;

#define null 0

#define ok 1

#define yes 1

#define no 0

#define error 0

#define false 0

#define maxsize 10

struct stillstack//定義乙個靜態棧1,棧頂指標指向棧頂元素位置

;int

initstack

(stillstack &s)

//對靜態棧的初始化

intpush

(stillstack &s,

int e)

//靜態棧入棧

intpop

(stillstack &s,

int&e)

//靜態棧出棧

intisempty

(stillstack s)

//用bottom=top來判定棧空

intisfull

(stillstack s)

//用bottom=top來判定棧滿

intlength

(stillstack s)

//用botto-top來求棧中元素個數

stillstack s1, s2;

intinqueue

(int x)

//進隊

else

//否則if(

!isempty

(s2)

)//若棧2不為空則佇列滿了

return error;

else

//若棧2為空,將棧1中所有元素倒入棧2中,然後元素進棧1

push

(s1, x)

;return ok;}}

intoutqueue

(int

&x)//出隊

else

//否則

pop(s2, x)

;return ok;}}

}int

queue_isempty()

//判隊空

intqueue_isfull()

//判隊滿

intmain()

}if(z ==0)

if(z ==2)

else}if

(z ==3)

else}if

(z =

999)

return ok;

}}

:本文參考了嚴蔚敏的《 資料結構》。

用兩個棧模擬佇列

問題 如何用兩個堆疊模擬實現乙個佇列?如果這兩個堆疊的容量分別是m和n m n 你的方法能保證的佇列容量是多少?如何模擬?首先棧是先進後出,佇列是先進先出,因此二者的差別主要在於進出的順序。假設有棧a n b m 當把n個資料全部放入棧a,此時a棧頂是n,棧底是1。再將a內的資料出棧存入棧b,此時棧...

用兩個棧模擬佇列

pragma once define ndebug include include includeusing namespace std include cmystack.h templateclass cqueue return stack2.top private stackstack1 sta...

7 兩個棧模擬佇列,兩個佇列模擬棧

利用兩個棧模擬佇列 stack1,stack2 首先向stack1當中放入資料,如果需要輸出資料,從stack2中delete資料,如果stack2為空,就把stack1中資料匯入stack2 include static.h include include templateclass cquue ...