problem:
如何僅用佇列結構實現棧結構?
solution:
佇列是先進先出,而棧是先進後出
故使用兩個佇列來實現乙個棧的功能
乙個存放原來的資料,
另乙個做資料倒騰的容器
code:
1class
queuetostack211
inttop()
1219
int res =data.front();
20temp.push(data.front());
21data.pop();
2223 auto tem =data;
24 data =temp;
25 temp = data;//
交換回來,始終保持資料在data中
2627
return res;//
返回top值28}
2930
void
pop()
3138 data.pop();//
刪除top值
3940 auto tem =data;
41 data =temp;
42 temp = data;//
交換回來,始終保持資料在data中43}
4445 };
problem2:
如何僅用棧結構實現佇列結構?
解題思路:
同樣的,使用兩個棧data,temp來實現列表功能
data用來存放資料,temp用來倒騰資料
code:
1class
stacktoqueue211
intfront()
1218
int res =temp.top();
19while (!temp.empty())
2024
return
res;25}
2627
void
pop()
2834
temp.pop();
35while (!temp.empty())
3640
}41 };
測試**:
1void
test()
2
棧與佇列之間的相互實現
棧與佇列之間的相互實現,是面試中的經典試題。入隊 元素進棧a 出隊 先判斷棧b是否為空,為空則將棧a中的元素 pop 出來並 push 進棧b,再棧b出棧,如不為空則棧b直接出棧 複雜度分析 這樣用兩個棧實現乙個佇列,入隊的複雜度為o 1 出隊的複雜度則變為o n 而直接用 python 的單個列表...
棧與佇列的相互轉換實現
一 使用兩個棧實現乙個佇列 棧s1,s2 入隊操作 入棧操作,count 1 出隊操作 s1出棧,入棧s2,出棧s2 具體實現 include includeusing namespace std 利用兩個棧實現乙個佇列 templateclass myque void push t elem q....
棧和佇列相互實現
題目一 佇列實現棧 要求 使用佇列實現棧的下列操作 push x pop top empty 方法 利用雙佇列deque實現棧,操作方便,效率較高 思路 1 push 操作,為了保證先進棧的元素一直在棧底,需要將兩個佇列交替使用,才可滿足需求,所以我們在空的佇列新增元素,然後將非空佇列的元素全部追加...