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
Post a Comment