用两个栈实现队列 C++实现

来源:互联网 发布:数值概率算法 编辑:程序博客网 时间:2024/06/10 21:21
//============================================================================// Name        : QueueRealizedByStack.cpp// Author      : Lee// Version     :// Copyright   : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include <iostream>#include <stack>using namespace std;template<typename T> class CQueue{public:CQueue() {}~CQueue() {}void appendTail(const T& node); // append a element to tailvoid deleteHead(); // remove a element from headsize_t size();T front();private: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.size()>0){m_stack2.pop();}else{if(0==m_stack1.size()){return;}else{while(m_stack1.size()!=0){m_stack2.push(m_stack1.top());m_stack1.pop();}m_stack2.pop();}}}template<typename T> size_t CQueue<T>::size(){return m_stack1.size()+m_stack2.size();}template<typename T> T CQueue<T>::front(){if(m_stack2.size()>0){return m_stack2.top();}else{if(0==m_stack1.size()){T t;return t;}else{while(m_stack1.size()!=0){m_stack2.push(m_stack1.top());m_stack1.pop();}return m_stack2.top();}}}int main() {cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!CQueue<int> cq;cq.appendTail(4);cq.appendTail(3);cout<<cq.front();return 0;}


 

0 0
原创粉丝点击