您的位置:首页 > 编程语言 > C语言/C++

C++两个栈实现一个队列

2016-12-08 00:14 627 查看
#include <iostream>

using namespace std;

#include <stack>

class Queue{

public:

    stack<int> myStack1;

    stack<int> myStack2;

    void push(int t){

        myStack1.push(t);

    }

    int pop(){

        if (empty())

        {

            return NULL;

        }

        else if (myStack2.empty())

        {

            int size=myStack1.size();

            for (int i=0;i<size;i++)

            {

                myStack2.push(myStack1.top());

                myStack1.pop();

            }

        }

        int temp=myStack2.top();

        myStack2.pop();

        return temp;

    }

    bool empty(){

        bool b=false;

        if (myStack2.empty()&&myStack1.empty())

        {

            b=true;

        }

        return b;

    }

    int size(){

        int temp=myStack1.size();

        temp+=myStack2.size();

        return temp;

    }

    //取队首元素

    int front(){

        int result=NULL;

        if (empty())

        {

            return result;

        }

        else if (myStack2.empty())

        {

            int size=myStack1.size();

            for (int i=0;i<size;i++)

            {

                myStack2.push(myStack1.top());

                myStack1.pop();

            }

        }

        result=myStack2.top();

        return result;

    }

    //取队尾元素

    int back(){

        int result=NULL;

        if (empty())

        {

            return result;

        }

        else if (!myStack1.empty())

        {

            result=myStack1.top();

        }else{

            int size=myStack2.size();

            for (int i=0;i<size;i++)

            {

                myStack1.push(myStack2.top());

                myStack2.pop();

            }

            result=myStack1.top();

        }

        return result;

    }

    

};

void main()

{

    Queue *queue=new Queue();

    for (int i=0;i<10;i++)

    {

        queue->push(i);

    }

    

    for (int i=0;i<5;i++)

    {

        cout<<queue->pop()<<endl;

    }

    cout<<"front:"<<queue->front()<<endl;

    cout<<"back:"<<queue->back()<<endl;

    for (int i=10;i<20;i++)

    {

        queue->push(i);

    }

    cout<<"pop5-19"<<endl;

    cout<<"queuesize"<<queue->size()<<endl;

    for (int i=0;true;i++)

    {

        if (queue->empty())

        {

            break;

        }

        cout<<queue->pop()<<endl;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 算法