题目:用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。
代码:
#include#include using namespace std; class MyQueue { private: stack s1; //入队 stack s2; //出队 public: void push(int x) { s1.push(x); } void pop() { if (!s2.empty()) { s2.pop(); } else { while (!s1.empty()) { int tmp = s1.top(); s1.pop(); s2.push(tmp); } s2.pop(); } } int front() { if (!s2.empty()) { return s2.top(); } else { while (!s1.empty()) { int tmp = s1.top(); s1.pop(); s2.push(tmp); } return s2.top(); } } bool empty() { if (s1.empty() && s2.empty()) { return true; } else return false; } }; int main() { MyQueue que; que.push(1); que.push(2); que.push(3); que.push(4); que.push(5); while (!que.empty()) { cout << que.front() << "t"; que.pop(); } return 0; }
过程:
(1)void push(int x)
{
s1.push(x);
}
(2) void pop()
{
if (!s2.empty())
{
s2.pop();
}
else
{
while (!s1.empty())
{
int tmp = s1.top();
s1.pop();
s2.push(tmp);
}
s2.pop();
}


![JZ9 用两个栈实现队列[C++] JZ9 用两个栈实现队列[C++]](http://www.mshxw.com/aiimages/31/347868.png)
