Saturday, September 14, 2019

Implement queue using two stack in cpp

#include< iostream > #include< stack >
using namespace std;
stack<int> s1, s2;
void enqueue(int data)
{
while(!s1.empty()) {
s2.push(s1.top());
s1.pop();
}
s1.push(data);
while(!s2.empty()) {
s1.push(s2.top());
s2.pop();
}
}
void dequeue()
{
if(!s1.empty()) {
s1.pop();
}
}
int front()
{
return s1.top();
}
bool isEmpty()
{
return s1.size() == 0;
}
int size()
{
return s1.size();
}
void printData()
{
while(!s1.empty()) {
cout << s1.top() << " ";
s1.pop();
}
cout << endl;
}
int main()
{
int n, m, k;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> k;
enqueue(k);
}
cout << "Queue is empty : " << (isEmpty()?"True":"False") << endl;
cout << "Queue front element : " << front() << endl;
dequeue();
cout << "Queue size : " << size() << endl;
enqueue(12);
enqueue(6);
cout << "Queue new size : " << size() << endl;
cout << "Queue new element are : ";
printData();
cout << "Queue is empty : " << (isEmpty()?"True":"False") << endl;
return 0;
}

Queue implement by array in c++


#include< iostream > using namespace std; int front = 0, rear = 0;
void enqueue(int queue[], int element, int arrSize)
{
if(rear != arrSize){
queue[rear] = element;
rear++;
}
}
void dequeue(int queue[])
{
if(front != rear){
queue[front] = 0;
front++;
}
}
int frontData(int queue[])
{
return queue[front];
}
int size()
{
return rear - front;
}
bool isEmpty()
{
return front == rear;
}
int main()
{
int n, k;
cin >> n;
int queue[n+1];
for(int i = 0; i < n; i++){
cin >> k;
enqueue(queue, k, n);
}
cout << "Queue size : " << size() << endl;
cout << "Queue first element = " << frontData(queue) << endl;
dequeue(queue);
cout << "Queue new first element = " << frontData(queue) << endl;
cout << "Queue is empty = " << (isEmpty()? "True":"False") << endl;
cout << "Queue data are : " ;
while(!isEmpty()) {
cout << frontData(queue) << " ";
dequeue(queue);
}
cout << endl;
cout << "Queue is empty = " << (isEmpty()? "True":"False") << endl;
return 0;
}