棧與佇列的相互轉換實現

2021-09-11 18:34:07 字數 828 閱讀 1650

一、使用兩個棧實現乙個佇列(棧s1,s2)

入隊操作:入棧操作,count+1;

出隊操作:s1出棧,入棧s2,出棧s2

具體實現**:

#include#includeusing namespace std;

//利用兩個棧實現乙個佇列

templateclass myque

void push(t elem)

q.change();

for(int j=0;j<5;j++)

system("pause");

return 0;

}

執行結果:

二、使用佇列來實現棧

入棧操作:入隊操作

出棧操作:將前count-1個元素先出隊再入隊,最終將隊尾元素移到了隊首,就可以出隊啦

實現**:

佇列與棧的相互實現

problem 如何僅用佇列結構實現棧結構?solution 佇列是先進先出,而棧是先進後出 故使用兩個佇列來實現乙個棧的功能 乙個存放原來的資料,另乙個做資料倒騰的容器 code 1 class queuetostack211 inttop 1219 int res data.front 20te...

棧與佇列之間的相互實現

棧與佇列之間的相互實現,是面試中的經典試題。入隊 元素進棧a 出隊 先判斷棧b是否為空,為空則將棧a中的元素 pop 出來並 push 進棧b,再棧b出棧,如不為空則棧b直接出棧 複雜度分析 這樣用兩個棧實現乙個佇列,入隊的複雜度為o 1 出隊的複雜度則變為o n 而直接用 python 的單個列表...

棧和佇列相互實現

題目一 佇列實現棧 要求 使用佇列實現棧的下列操作 push x pop top empty 方法 利用雙佇列deque實現棧,操作方便,效率較高 思路 1 push 操作,為了保證先進棧的元素一直在棧底,需要將兩個佇列交替使用,才可滿足需求,所以我們在空的佇列新增元素,然後將非空佇列的元素全部追加...