-
用兩個棧模擬隊列
class CQueue {stack<int> stack1;stack<int> stack2; public:CQueue() {}void appendTail(int value) {stack1.push(value);}int deleteHead() {int val=-1;if(!stack2.empty()){val = stack2.top();stack2.pop();}else if(!stack1.empty()){while(!stack1.empty()){val = stack1.top();stack1.pop();stack2.push(val);}stack2.pop();}return val;} };
-
用隊列實現棧
-
兩個隊列實現棧
//每次入隊一個元素都需要將這個元素放在隊頭 // 時間O(n),空間O(n) class MyStack {queue<int> Que1;queue<int> Que2; public:MyStack() {}void push(int x) {Que1.push(x);while(!Que2.empty()){Que1.push(Que2.front());Que2.pop();}swap(Que1,Que2);}int pop() {int val = Que2.front();Que2.pop();return val;}int top() {return Que2.front();}bool empty() {return Que2.empty();} };
-
一個隊列實現棧
// 一個隊列實現,每次都將元素置前面 // 時間O(n),空間O(1) class MyStack {queue<int> Que; public:MyStack() {}void push(int x) {int n = Que.size();Que.push(x);while(n--){Que.push(Que.front());Que.pop();}}int pop() {int val = Que.front();Que.pop();return val;}int top() {return Que.front();}bool empty() {return Que.empty();} };
-