兩個棧實現乙個佇列和兩個佇列實現乙個棧

2021-08-21 07:52:39 字數 591 閱讀 6280

棧的特性:先進後出(filo);      佇列的特性:先進先出(fifo)

1、兩個棧實現乙個佇列

(1)思路:入棧時,直接壓入棧1中;如果棧1滿了,判斷棧2是否為空,若為空,則將棧1元素全部倒入棧2,再入棧;若棧2不為空,則不能再入元素;

出棧時,判斷棧2是否為空,若棧為空,則將棧1中的元素倒入棧2,否則直接彈出棧2中的元素;

(2)**實現:

1 //入隊操作

2 void enqueue(stack&s1,stack&s2,int m)

3 6

7 //出隊操作

8 void dequeue(stack&s1,stack&s2,int &m)

9 6

7 //出棧操作

8 void stackpop(queue&q1,queue&q2,int &m)

9 16 m = q1.front();

17 q1.pop();

18 int l = q2.size();

19 for (int j = 0;j20

24 }

python兩個佇列實現乙個棧和兩個棧實現乙個佇列

棧 先進後出 佇列 先進先出 思路兩個棧實現乙個佇列 思路 兩個棧 都是先進後出 push新增資料的時候,將data資料push到stack1 中,pop資料的時候,先判斷stack2種是否有資料 如果有資料的話,直接pop stack2中的資料 因為pop是直接彈出最後乙個資料 如果stack2中...

兩個棧實現乙個佇列和兩個佇列實現乙個棧

stack 後進先出 lifo 是在表的一端進行插入或刪除運算的線性表,我們把插入 刪除的這一端稱為棧頂 top 另一端稱為棧底 bottom e push e item 把元素壓入棧頂並返回此元素 e pop 移除棧頂元素並返回此元素 e peek 檢視棧頂元素而不移除它 boolean empt...

兩個棧實現乙個佇列和兩個佇列實現乙個棧

在這裡我們先說明一下,我們在此 中用到的棧和佇列都是stl庫中實現的 思路 兩個棧,stark1和stark2,將stark1作為儲存空間,stark2作為零時快取區。入隊時,將入隊元素全部壓入stark1中即可。出隊時,將stark1中的元素全部pop出來壓入stark2中,然後在全部pop出來就...