用c++写2个栈实现一个队列
时间: 2024-05-04 10:18:42 浏览: 93
C/C++之用两个栈实现一个队列的功能
实现一个队列可以使用两个栈,其中一个栈作为入队栈,另一个栈作为出队栈。具体实现如下:
```c++
#include <iostream>
#include <stack>
using namespace std;
class Queue {
public:
void enqueue(int x) {
inStack.push(x);
}
int dequeue() {
if (outStack.empty()) {
while (!inStack.empty()) {
outStack.push(inStack.top());
inStack.pop();
}
}
if (outStack.empty()) {
cout << "Queue is empty!" << endl;
return -1;
}
int x = outStack.top();
outStack.pop();
return x;
}
private:
stack<int> inStack;
stack<int> outStack;
};
int main() {
Queue q;
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
cout << q.dequeue() << endl; // output: 1
cout << q.dequeue() << endl; // output: 2
cout << q.dequeue() << endl; // output: 3
cout << q.dequeue() << endl; // output: Queue is empty! -1
return 0;
}
```
以上代码中,enqueue() 函数将元素添加到入队栈 inStack 中。dequeue() 函数从出队栈 outStack 中删除并返回元素。当 outStack 为空时,将所有元素从 inStack 中弹出并压入 outStack 中。如果两个栈都为空,就输出 "Queue is empty!",并返回 -1。
阅读全文