栈实现队列

#include <iostream>
#include <stack>
using namespace std;

class MyQueue
{
public:
    bool empty();

    int front();

    void push(int a);

    int pop();
private:
    stack<int> S;
};

bool MyQueue::empty()
{
    return S.empty();
}

int MyQueue::front()
{
    return S.top();
}

int MyQueue::pop()
{
    int i = S.top();
    S.pop();
    return i;    
}

void MyQueue::push(int a)
{
    stack<int> temp;
    while(!S.empty())
    {
        temp.push(S.top());
        S.pop();
    }

    temp.push(a);

    while(!temp.empty())
    {
        S.push(temp.top());
        temp.pop();
    }
}

int main()
{
    MyQueue Queue;
    for(int i = 0; i < 5; i++)
    {
        Queue.push(i);
        cout << Queue.front() << endl;
        
    }
    Queue.pop();
    Queue.pop();
    Queue.pop();
    Queue.pop();
    cout << Queue.front() << endl;
    return 0;
}

 

posted @ 2021-01-12 11:22  11YS  阅读(51)  评论(0编辑  收藏  举报