数据结构用两个栈实现一个队列的实例

数据结构用两个栈实现一个队列的实例

栈是先进后出,队列是先进先出

每次元素都push在st1中,pop的时候如果st2为空,将st1的栈顶元素放在st2的栈底,这样st1的所有元素都放在st2中,st1的栈底就是st2的栈顶,pop st2的栈顶,这样就满足了队列的先进先出。

#include <iostream>using namespace std;#include <stack>#include <stdlib.h>template <class T>class SQueue {public:  void Push(const T& value);  T Pop();private:  stack<T> st1;  stack<T> st2;};template <class T>T SQueue<T>::Pop(){  if (st2.size() <= 0)  {    if (st1.size() == 0)    {      exit(1);    }    while ((st1.size() > 0))    {      T& top = st1.top();      st2.push(top);      st1.pop();    }  }  T head = st2.top();  st2.pop();  return head;}template <class T>void SQueue<T>::Push(const T& value){  st1.push(value);}int main(){  SQueue<int> sq;  for (int i = 0; i < 10; ++i)  {    sq.Push(i);  }  for (int i = 0; i < 5; ++i)   {    cout << sq.Pop() << " ";  }  for (int i = 0; i < 5; ++i) //分两次验证  {    cout << sq.Pop() << " ";  }  cout << endl;  system("pause");  return 0;}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

勇敢的冷静的理智的去接受失败,有时不但是必要的,而且是很有必要的。

数据结构用两个栈实现一个队列的实例

相关文章:

你感兴趣的文章:

标签云: