第五十七题(用俩个栈实现队列)

来源:互联网 发布:财务管理与大数据 编辑:程序博客网 时间:2024/06/05 15:42
57.用俩个栈实现队列。
题目:某队列的声明如下:
template<typename T> class CQueue
{
public:
CQueue() {}
~CQueue() {}
void appendTail(const T& node); // append a element to tail
void deleteHead(); // remove a element from head
private:
Stack<T> m_stack1;
Stack<T> m_stack2;

};

思路:

使用m_stack1的push操作模拟队列的入队操作,出队操作时,队首元素在m_stack1底部,将m_stack1元素全部倒入m_stack2中,将出队操作转换为m_stack2的pop操作。

代码:

template<typename T> class CQueue{public:CQueue() {}~CQueue() {}void appendTail(const T& node); // append a element to tailvoid deleteHead(); // remove a element from headprivate:stack<T> m_stack1;stack<T> m_stack2;};template<typename T> void CQueue<T>::appendTail(const T& node){m_stack1.push(node);}template<typename T>void CQueue<T>::deleteHead(){if (m_stack2.empty()){if (m_stack1.empty()){cout << "queue empty!" << endl;return;}while (!m_stack1.empty()){m_stack2.push(m_stack1.top());m_stack1.pop();}}m_stack2.pop();}



0 0
原创粉丝点击