使用两个栈实现一个队列的先进先出的功能。
#include <iostream>
#include <stack>
using namespace std;
class CQueue
{
public:
CQueue() {}
~CQueue() {}
void appendTail(const int &element ); // append a element to tail
void deleteHead(); // remove a element from head
private:
stack<int> m_stack1;
stack<int> m_stack2;
};
void CQueue::appendTail(const int &element)
{
m_stack1.push(element);
}
void CQueue::deleteHead()
{
int tmp;
if(m_stack2.empty())
{
while(!m_stack1.empty())
{
tmp = m_stack1.top();
m_stack1.pop();
m_stack2.push(tmp);
}
}
{
tmp = m_stack2.top();
cout<<tmp<<endl;
m_stack2.pop();
}
}
void main()
{
CQueue q1,q2;
q1.appendTail(1);
q1.appendTail(2);
q1.appendTail(3);
q1.appendTail(4);
q1.appendTail(5);
q1.deleteHead();
q1.deleteHead();
q1.deleteHead();
q1.deleteHead();
q1.deleteHead();
}