Implementation of stack using queues..


#include<stdio.h>
#include<queue>
using namespace std;

class Stack_As_Queue
{
    queue<int> queue1;
    queue<int> queue2;
    int size;
    public:
    Stack_As_Queue(int n)
    {
        size=n;
    }
    void fix_Queue(queue<int> &to,queue<int> &from)
    {
        while(!from.empty())
        {
            to.push(from.front());
            from.pop();
        }
    }

    void copy_back(queue<int> queue,int arr[])
    {
        for(int i=0;i<size;i++)
        {
            arr[i]=queue.front();
            queue.pop();
        }
    }

    void Implement_Stack(int arr[])
    {
        for(int i=0;i<size;i++)
        {
            if(queue1.empty())
            {
                queue1.push(arr[i]);
                fix_Queue(queue1,queue2);
            }
            else if(queue2.empty())
            {
                queue2.push(arr[i]);
                fix_Queue(queue2,queue1);
            }
        }
        if(queue1.empty())
        {
            copy_back(queue2,arr);
        }
        else
        {
            copy_back(queue1,arr);
        }
    }

void display(int arr[])
{
    for(int i=0;i<size;i++)
    {
        printf("%d ",arr[i]);
    }
}
};

int main()
{
    int arr[]={1,2,3,4,5};
    Stack_As_Queue q(5);
    q.Implement_Stack(arr);
    q.display(arr);
}

Comments

Popular Posts