两个栈实现一个队列
2014-09-15 10:04
225 查看
一. 描述
使用两个栈 in_stack(进) 和 out_stack (出) ,
1. 进队列直接将数据插入到in_stack 栈中。
2. 出队列时判断out_stack 是否为空,若为空则将in_stack 中的数据全部倒进out_stack 栈中,
接着从out_stack 出栈即出队列。
二. 代码实现
使用两个栈 in_stack(进) 和 out_stack (出) ,
1. 进队列直接将数据插入到in_stack 栈中。
2. 出队列时判断out_stack 是否为空,若为空则将in_stack 中的数据全部倒进out_stack 栈中,
接着从out_stack 出栈即出队列。
二. 代码实现
/************************************************************************* > File Name: StackToQueue.h > Author: > Mail: > Created Time: 2014年09月15日 星期一 08时26分42秒 ************************************************************************/ #include <stack> namespace StackToQueue { using std::stack; class CQueue { public: CQueue (); ~CQueue (); bool Empty (void); bool InQueue (int x); int GetTop (void); bool OutQueue (void); // int GetCount (); private: stack<int> in_stack; stack<int> out_stack; void GetOutQueue (void); }; } /************************************************************************* > File Name: StackToQueue.cpp > Author: > Mail: > Created Time: 2014年09月15日 星期一 08时26分29秒 ************************************************************************/ #include <iostream> #include "StackToQueue.h" using namespace std; using namespace StackToQueue; CQueue::CQueue () {} CQueue::~CQueue () {} bool CQueue::Empty () { if ( out_stack.empty () ) GetOutQueue (); return out_stack.empty () ? true : false; } bool CQueue::InQueue (int x) { in_stack.push (x); // cout << in_stack.top () << endl; } void CQueue::GetOutQueue (void) { if ( out_stack.empty () ) { while ( !in_stack.empty () ) { out_stack.push (in_stack.top ()); in_stack.pop (); } } } int CQueue::GetTop (void) { GetOutQueue (); // cout << out_stack.top () << endl; return out_stack.top (); } bool CQueue::OutQueue (void) { GetOutQueue (); if ( out_stack.empty () ) return false; else out_stack.pop (); } int main (void) { CQueue q; for (int i = 0; i < 10; i++) { q.InQueue (i); } while ( !q.Empty () ) { cout << q.GetTop () << '\t'; q.OutQueue (); } cout << endl; return 0; }
相关文章推荐
- 关于用两个栈实现一个队列的小问题
- 2.用两个顺序存储结构的栈实现一个队列
- 用两个栈实现一个队列的功能
- 用两个栈实现一个队列
- 用两个栈实现一个队列的功能 && 两个队列实现一个栈的功能 && 代码实例
- 【题目5】如何使用两个栈来实现一个队列
- 用两个栈实现一个队列
- 用两个栈实现一个队列功能
- 两个栈实现一个队列
- 用两个栈实现一个队列——我作为面试官的小结
- 面试系列7--用两个栈实现一个队列的功能
- 算法导论10.1-6习题解答(用两个栈实现一个队列)
- 用两个栈实现一个队列的功能...
- 用两个栈实现一个队列的功能 && 两个队列实现一个栈的功能 && 代码实例
- 用两个栈实现一个队列的功能
- 实现了两个普通的队列,一个优先权队列
- 两个栈实现一个队列
- 用两个栈实现一个队列的功能 && 两个队列实现一个栈的功能 && 代码实例
- 用两个栈实现一个队列 (CLRS 10.1-6)
- 使用两个队列实现一个栈,使用两个栈实现一个队列!