两个栈实现队列

来源:互联网 发布:淘宝金丝绒连衣裙 编辑:程序博客网 时间:2024/05/16 11:35
#include <stdio.h>#include <iostream>#include <stack>#include <limits.h>#include <queue>using namespace std;class SQueue{     public:        void  EnQueue(int value);        void  DeQueue();        void  Empty();        int   Size();        int   Front();//队首元素        int   Back();//队尾元素     private:         stack<int> inStack;         stack<int> outStack;};    void SQueue::EnQueue(int value){      inStack.push(value);}    void SQueue::DeQueue(){       if(outStack.size() > 0)           outStack.pop();       else   {          if(inStack.size() > 0)  {                  int size = inStack.size();             for(int i = 0; i < size; i++) {                outStack.push(inStack.top());                 inStack.pop(); }             outStack.pop();  }   }}     void SQueue::Empty() {        inStack.empty();         outStack.empty(); }    int  SQueue::Size(){       return inStack.size() + outStack.size();}    int  SQueue::Front(){          if(outStack.size() > 0)             return outStack.top();          else   {         if(inStack.size() > 0) {    int size = inStack.size();   for(int i = 0; i < size; i++) {                outStack.push(inStack.top());                 inStack.pop(); }              return outStack.top(); }            else             return INT_MAX;  }}     int SQueue::Back() {         if(inStack.size() > 0)               return inStack.top();       else    {          if(outStack.size() > 0)  {               int size = outStack.size();                 for(int i = 0; i < size; i++) {                         inStack.push(outStack.top());                               outStack.pop(); }                    return inStack.top();  }            else              return INT_MAX; }}           void PrintQueue(SQueue sq)   {                   int size = sq.Size();                  for(int i = 0; i < size; i++)  {                        printf("%d ", sq.Front());                              sq.DeQueue();  }                   printf("/n");   }int main(){ SQueue sq; for(int i = 0; i < 5; i++)  sq.EnQueue(i); cout<<endl; PrintQueue(sq); sq.DeQueue();  return 0;}

原创粉丝点击