**Strings can be used only to find the stack size For this assignment you will i
ID: 3805917 • Letter: #
Question
**Strings can be used only to find the stack size For this assignment you will implement stacks and queues ADT. A stack and a queue are the same if they have the same number of elements and the elements at the corresponding positions are the same. The program also outputs whether the elements do have the same matching group symbols. Matching symbols are (, ), {, }, [, ], The program displays a menu on the screen allowing the user to enter the elements of stack and queue. The program terminates when the user enters 9. The program accepts only integer data type when selecting from the menu (1 or 9). Everything else should be rejected with an invalid option message.Explanation / Answer
#include<iostream>
#include<stdlib.h>
#include<process.h>
using namespace std;
template<class T>
class Queue
{
private:
int front,rear;
T *queue;
int maxsize;
public:
Queue(int maxqueuesize)
{
front=0;
rear=-1;
maxsize=maxqueuesize;
queue=new T[maxsize];
}
~Queue()
{
delete[] queue;
}
int isempty();
int isfull();
void insert();
void deletion();
void atfront();
void atrear();
void display();
};
class Stack
{
Type s[10];
int top,n;
public:
Stack()
{
top=-1;
cout<<" Enter the Stack Size : ";
cin>>n;
}
void push(T elt)
{
if(top<n-1)
s[++top]=elt;
else
cout<<" stack is full.Can't insert "<<elt<<endl;
}
void pop()
{
if(top<0)
cout<<" stack is empty. ";
else
cout<<" Poped elt : "<<s[top--];
}
void stk_operation();
};
template<class T>
void Stack<T> :: stk_operation()
{
int choice=1,i;
Type elt;
while(choice>0 && choice<3)
{
cout<<" 1.PUSH 2.POP Any Key To Exit Choice : ";
cin>>choice;
switch(choice)
{
case 1 : //push
cout<<" Enter the Elt to push : ";
cin>>elt;
push(elt);
cout<<" stack content : ";
for(i=0;i<=top;i++)
cout<<s[i]<<" ";
break;
case 2 : //pop
pop();
cout<<" stack content : ";
for(i=0;i<=top;i++)
cout<<s[i]<<" ";
break;
}
}
}
template<class T>
void Queue,T> :: Queue_operation()
{
int ch;
Queue<int> q(10);
do
{
cout<<" 1.Insertion 2.Deletion 3.Display Front Element 4.Display Rear Element 5.Display Queue 6.Exit ";
cout<<"Enter your Choice:";
cin>>ch;
switch(ch)
{
case 1:
q.insert();
break;
case 2:
q.deletion();
break;
case 3:
q.atfront();
break;
case 4:
q.atrear();
break;
case 5:
q.display();
break;
case 6:
exit(0);
break;
default: cout<<" Wrong Choice Entered!";
}
}while(ch<=6);
}
int Queue<T>::isempty()
{
if(front==0&&rear==-1||front==rear)
return 1;
else
return 0;
}
template<class T>
int Queue<T>::isfull()
{
if(rear==maxsize-1)
return 1;
else
return 0;
}
template<class T>
void Queue<T>::atfront()
{
if(isempty())
cout<<" Sorry the queue is empty!";
else
cout<<" Front element of the queue is : "<<queue[front];
}
template<class T>
void Queue<T>::atrear()
{
if(isempty())
cout<<" Sorry the queue is empty!";
else
cout<<" Rear element of the queue is : "<<queue[rear];
}
template<class T>
void Queue<T>::insert()
{
T ele;
if(isfull())
cout<<" Sorry the queue is full!";
else
{
cout<<" Enter the element to insert : ";
cin>>ele;
queue[++rear]=ele;
}
}
template<class T>
void Queue<T>::deletion()
{
if(isempty())
cout<<" Sorry the queue is empty!";
else
cout<<" Deleted element of the queue is : "<<queue[front++];
}
template<class T>
void Queue<T>::display()
{
if(isempty())
cout<<" Sorry the queue is empty!";
else
{
cout<<" Queue elements are : ";
for(int i=front;i<=rear;i++)
{
cout<<" "<<queue[i];
}
}
}
void main()
{
clrscr();
Stack<int> stk1;
Queue<int> que1;
cout<<" 1.STACK OPERATION USING TEMPLATE" ;
cout<<"2.Queue operation" ;
cout<<"press 9 to exit" ;
cin>>ch;
switch(ch)
{
case 1 : stl1.stk_operation();
break;
case 2 : que1.queue_operation();
break;
case 3:
default : cout<<"Invalid Choice";
exit(0);
#include<iostream>
#include<stdlib.h>
#include<process.h>
using namespace std;
template<class T>
class Queue
{
private:
int front,rear;
T *queue;
int maxsize;
public:
Queue(int maxqueuesize)
{
front=0;
rear=-1;
maxsize=maxqueuesize;
queue=new T[maxsize];
}
~Queue()
{
delete[] queue;
}
int isempty();
int isfull();
void insert();
void deletion();
void atfront();
void atrear();
void display();
};
class Stack
{
Type s[10];
int top,n;
public:
Stack()
{
top=-1;
cout<<" Enter the Stack Size : ";
cin>>n;
}
void push(T elt)
{
if(top<n-1)
s[++top]=elt;
else
cout<<" stack is full.Can't insert "<<elt<<endl;
}
void pop()
{
if(top<0)
cout<<" stack is empty. ";
else
cout<<" Poped elt : "<<s[top--];
}
void stk_operation();
};
template<class T>
void Stack<T> :: stk_operation()
{
int choice=1,i;
Type elt;
while(choice>0 && choice<3)
{
cout<<" 1.PUSH 2.POP Any Key To Exit Choice : ";
cin>>choice;
switch(choice)
{
case 1 : //push
cout<<" Enter the Elt to push : ";
cin>>elt;
push(elt);
cout<<" stack content : ";
for(i=0;i<=top;i++)
cout<<s[i]<<" ";
break;
case 2 : //pop
pop();
cout<<" stack content : ";
for(i=0;i<=top;i++)
cout<<s[i]<<" ";
break;
}
}
}
template<class T>
void Queue,T> :: Queue_operation()
{
int ch;
Queue<int> q(10);
do
{
cout<<" 1.Insertion 2.Deletion 3.Display Front Element 4.Display Rear Element 5.Display Queue 6.Exit ";
cout<<"Enter your Choice:";
cin>>ch;
switch(ch)
{
case 1:
q.insert();
break;
case 2:
q.deletion();
break;
case 3:
q.atfront();
break;
case 4:
q.atrear();
break;
case 5:
q.display();
break;
case 6:
exit(0);
break;
default: cout<<" Wrong Choice Entered!";
}
}while(ch<=6);
}
int Queue<T>::isempty()
{
if(front==0&&rear==-1||front==rear)
return 1;
else
return 0;
}
template<class T>
int Queue<T>::isfull()
{
if(rear==maxsize-1)
return 1;
else
return 0;
}
template<class T>
void Queue<T>::atfront()
{
if(isempty())
cout<<" Sorry the queue is empty!";
else
cout<<" Front element of the queue is : "<<queue[front];
}
template<class T>
void Queue<T>::atrear()
{
if(isempty())
cout<<" Sorry the queue is empty!";
else
cout<<" Rear element of the queue is : "<<queue[rear];
}
template<class T>
void Queue<T>::insert()
{
T ele;
if(isfull())
cout<<" Sorry the queue is full!";
else
{
cout<<" Enter the element to insert : ";
cin>>ele;
queue[++rear]=ele;
}
}
template<class T>
void Queue<T>::deletion()
{
if(isempty())
cout<<" Sorry the queue is empty!";
else
cout<<" Deleted element of the queue is : "<<queue[front++];
}
template<class T>
void Queue<T>::display()
{
if(isempty())
cout<<" Sorry the queue is empty!";
else
{
cout<<" Queue elements are : ";
for(int i=front;i<=rear;i++)
{
cout<<" "<<queue[i];
}
}
}
void main()
{
clrscr();
Stack<int> stk1;
Queue<int> que1;
cout<<" 1.STACK OPERATION USING TEMPLATE" ;
cout<<"2.Queue operation" ;
cout<<"press 9 to exit" ;
cin>>ch;
switch(ch)
{
case 1 : stl1.stk_operation();
break;
case 2 : que1.queue_operation();
break;
case 3: cout<<"invalid Choice";
default : exit(0);
case 9: cout<<"Program Terminates";
exit(0);
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.