用两个栈实现一个队列
2017-07-21 15:22
316 查看
栈的顺序是先进后出,队列则是先进先出。假设两个栈分别为stack1和stack2,入队列相当于在stack1中入栈,出队列时将stack1中的元素全部搬到stack2中,然后在stack2中出栈,如果stack2中没有元素了,就去stack1中搬元素。
template <typename T> class CQueue
{
public:
CQueue();
~CQueue();
void push_queue(const T& element);
void pop_queue();
private:
stack<T> stack1;
stack<T> stack2;
};
template <typename T> void CQueue<T>::push_queue(const T& element) //入队列
{
stack1.push(element);
}
template <typename T> void CQueue<T>::pop_queue() //出队列
{
if(stack2.size() <= 0)
{
while(stack1.size() > 0)
{
T& data = stack1.top();
stack1.pop();
stack2.push(data);
}
}
if(stack2.size() == 0)
{
cout<<"queue is empty!!!"<<endl;
return NULL;
}
stack2.pop();
}
template <typename T> class CQueue
{
public:
CQueue();
~CQueue();
void push_queue(const T& element);
void pop_queue();
private:
stack<T> stack1;
stack<T> stack2;
};
template <typename T> void CQueue<T>::push_queue(const T& element) //入队列
{
stack1.push(element);
}
template <typename T> void CQueue<T>::pop_queue() //出队列
{
if(stack2.size() <= 0)
{
while(stack1.size() > 0)
{
T& data = stack1.top();
stack1.pop();
stack2.push(data);
}
}
if(stack2.size() == 0)
{
cout<<"queue is empty!!!"<<endl;
return NULL;
}
stack2.pop();
}
相关文章推荐
- 使用两个队列实现一个栈
- 两个栈实现的一个队列
- 使用两个栈(stack)实现一个队列(queue)
- 用两个栈模拟实现一个队列
- 两个队列实现一个栈
- 两个栈实现一个队列
- 剑指offer《面试题7:用两个栈实现队列》及用两个队列实现一个栈
- 用两个队列实现一个栈
- 面试题8:用两个栈实现一个队列
- 数据结构与算法_两个栈实现一个队列的功能
- 两个栈实现一个队列
- 每天一个小算法(6)---- 通过两个栈实现一个队列
- 数据结构面试题:两个队列实现一个堆栈
- C/C++之用两个栈实现一个队列的功能
- 使用两个队列实现一个栈,使用两个栈实现一个队列
- 一张图展示:用两个栈来实现一个队列,完成队列的Push和Pop操作
- 【面试题】剑指Offer-7-两个栈实现一个队列
- 使用两个栈实现一个队列
- 《剑指Offer》用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
- 【算法题目】用两个栈实现一个队列