題目描述
- 用兩個(gè)隊(duì)列實(shí)現(xiàn)棧
解題思路
- 劍指Offer 71
代碼
#include<iostream>
#include<queue>
using namespace std;
class Solution{
public:
void push(int node) {
if(queue1.empty() && queue2.empty()){
queue1.push(node);
}
else{
if(!queue1.empty()){
queue1.push(node);
}
else{
queue2.push(node);
}
}
}
int pop() {
int temp;
// 如果queue1不為空匠璧,則將queue1前n-1個(gè)元素壓入queue2
if(!queue1.empty()){
int tt = queue1.size()-1;
for(int i=0; i<tt; i++){
queue2.push(queue1.front());
queue1.pop();
}
temp = queue1.front();
queue1.pop();
}
else{ // 如果queue2不為空叨粘,則將queue2前n-1個(gè)元素壓入queue1
int tt = queue2.size()-1;
for(int i=0; i<tt; i++){
queue1.push(queue2.front());
queue2.pop();
}
temp = queue2.front();
queue2.pop();
}
return temp;
}
private:
queue<int> queue1;
queue<int> queue2;
};
main(){
Solution ss;
// ss.push(1);
// ss.push(2);
// ss.push(3);
// cout<<ss.pop();
// cout<<ss.pop();
// ss.push(4);
// cout<<ss.pop();
// ss.push(5);
// cout<<ss.pop();
// cout<<ss.pop();
ss.push(1);
ss.push(2);
ss.push(3);
ss.push(4);
ss.push(5);
cout<<ss.pop();
cout<<ss.pop();
cout<<ss.pop();
cout<<ss.pop();
cout<<ss.pop();
}
- 第一組測(cè)試輸出為: 32451
- 第二組測(cè)試輸出為: 54321
總結(jié)展望
- 題目相當(dāng)不錯(cuò),值得深思...