您的位置:首页 > 编程语言 > C语言/C++

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

2014-02-26 13:59 316 查看
//============================================================================
// 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 tail
void deleteHead(); // remove a element from head
size_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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: