c++利用两个栈实现队列的方法

  


  

  

队列:先进先出,即插入数据在队尾进行,删除数据在队头进行;

  

栈:后进先出,即插入与删除数据均在栈顶进行。

  


  

  
  

两个栈实现一个队列的思想:用pushStack栈作为推动数据的栈,用popStack栈作为流行数据的栈。

     
      <李>只要是对队列进行推操作,就将数据推入pushStack栈中。   <李>要实现队列的流行操作,有二点原则,如果popStack为空的话那么我们就将pushStack所有的元素放到popStack中,然后取popStack栈顶元素就是队列的队头,如果popStack不为空的话,我们就直接获取popStack的栈顶元素。   <李>对于顶级操作来说和流行操作类似,只是最后一步不用流行了。   
  

 C + +利用两个栈实现队列的方法”> <br/>
  </p>
  <p> <br/>
  </p>
  
  <pre类=   # include & lt; iostream>   # include & lt; stack>   # include & lt; exception>      template<类T>类MyQueue {   公众:   空推(const T&num);//入队列   T pop ();//出队列   T前();   私人:   std:: stackpushStack;   std:: stackpopStack;   };   template   空白MyQueue   T MyQueue   T MyQueue ::高级(){   如果(pushStack.empty () & & popStack.empty()){//如果二个栈都为空   把std:: runtime_error(队列为空);   }else if (popStack.empty()){//如果popStack为空,将pushStack全部元素倒popStack   而(! pushStack.empty ()) {   T数据=https://www.yisu.com/zixun/pushStack.top ();//获取pushStack栈顶元素   pushStack.pop ();//出栈   popStack.push(数据);   }   其他}{//如果popStack不为空的话直接返回popStack栈顶   T数据=popStack.top ();   返回数据;   }   }   int main () {   MyQueue myQueue1;   myQueue1.push (1);   myQueue1.push (2);   myQueue1.push (3);   myQueue1.push (4);   std:: cout <暗鼻傲餍?“& lt; & lt;myQueue1.pop () & lt; & lt;std:: endl;   std:: cout & lt; & lt;“当前流行的方法是:“& lt; & lt;myQueue1.pop () & lt; & lt;std:: endl;   std:: cout & lt; & lt;“当前流行的方法是:“& lt; & lt;myQueue1.pop () & lt; & lt;std:: endl;   std:: cout & lt; & lt;“当前流行的方法是:“& lt; & lt;myQueue1.pop () & lt; & lt;std:: endl;   std:: cout & lt; & lt;“当前流行的方法是:“& lt; & lt;myQueue1.pop () & lt; & lt;std:: endl;      返回0;   }      


  

  
      <李>用两个栈实现一个队列——我作为面试官的小结李   <李> c++之用两个栈实现一个队列李   
  

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。

c++利用两个栈实现队列的方法