码迷,mamicode.com
首页 > 其他好文 > 详细

两个栈模拟一个队列

时间:2015-04-01 15:25:38      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

两个栈模拟一个队列,1号栈为入队,栈顶表示队尾;2号栈为出队,栈顶表示队首。

入队,直接进1号栈;出队,先判断2号栈是否有元素,有元素就直接弹出栈顶即队首,如果2号栈没有元素,则将1号栈的元素顺序弹出并进2号栈。

  1. #include <iostream>  
  2. #include <stack>  
  3. #include <assert.h>  
  4. using namespace std;  
  5.   
  6. template<typename T>  
  7. class CQueue{     
  8.     public:  
  9.         CQueue(){}  
  10.         ~CQueue(){}  
  11.         void appendTail(const T& node);//入队  
  12.         void deleteHead();//出队  
  13.         T front();//取队首  
  14.     private:  
  15.         stack<T> m_stack1;  
  16.         stack<T> m_stack2;  
  17. };  
  18.   
  19. template<typename T>void CQueue<T>::appendTail(const T& node)  
  20. {  
  21.     m_stack1.push(node);  
  22. }  
  23.   
  24. template<typename T>void CQueue<T>::deleteHead()  
  25. {  
  26.     if(m_stack2.empty())  
  27.     {  
  28.         while(!m_stack1.empty())  
  29.         {         
  30.             m_stack2.push(m_stack1.top());  
  31.             m_stack1.pop();  
  32.         }  
  33.     }  
  34.     assert(m_stack2.size()>0);  
  35.     m_stack2.pop();  
  36. }  
  37.   
  38. template<typename T>T CQueue<T>::front()  
  39. {  
  40.     if(m_stack2.empty())  
  41.     {  
  42.         while(!m_stack1.empty())  
  43.         {             
  44.             m_stack2.push(m_stack1.top());  
  45.             m_stack1.pop();  
  46.         }  
  47.     }  
  48.     assert(m_stack2.size()>0);  
  49.     return m_stack2.top();  
  50. }  
  51.   
  52.   
  53. void main()  
  54. {  
  55.     CQueue<int> q;  
  56.     q.appendTail(13);  
  57.     q.appendTail(41);  
  58.     q.appendTail(86);  
  59.     q.appendTail(90);  
  60.     q.appendTail(32);  
  61.   
  62.     cout<<q.front()<<"出队"<<endl;  
  63.     q.deleteHead();  
  64.     cout<<"队首:"<<q.front()<<endl;  
  65.   
  66. }  

两个栈模拟一个队列

标签:

原文地址:http://blog.csdn.net/u014082714/article/details/44806597

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!