Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- void linear_enqueue(int q[],int &rear,int queue_max,int item)
- {
- if(rear==queue_max)
- cout<<"Overflow"<<endl;
- else
- {
- q[rear]=item;
- rear++;
- }
- }
- int linear_dequeue(int q[],int rear,int &frnt)
- {
- int item;
- if(rear==frnt)
- cout<<"Underflow"<<endl;
- else
- {
- item=q[frnt];
- frnt++;
- }
- return item;
- }
- void circular_enqueue(int q[],int &rear,int queue_max,int item,int &cnt)
- {
- if(cnt==queue_max)
- cout<<"Overflow"<<endl;
- else
- {
- q[rear]=item;
- rear=(rear+1)%queue_max;
- cnt++;
- }
- }
- int circular_dequeue(int q[],int rear,int &frnt,int &cnt,int queue_max)
- {
- int item;
- if(cnt==0)
- cout<<"Underflow"<<endl;
- else
- {
- item=q[frnt];
- cnt--;
- frnt=(frnt+1)%queue_max;
- }
- return item;
- }
- void display(int q[],int rear,int frnt,int queue_max)
- {
- for(int i=frnt;i!=rear;i=(i+1)%queue_max)
- cout<<q[i]<<" ";
- }
- int main()
- {
- int q_max,rear=0,frnt=0,cnt=0;
- cin>>q_max;
- int q[q_max];
- cout<<"Enetr 1 for linear queue, 2 for circular queue and 0 to exit"<<endl;
- int n;
- cin>>n;
- while(1)
- {
- if(n==1)
- {
- cout<<"Enter 3 to enqueue and 4 to dequeue"<<endl;
- int a;
- cin>>a;
- if(a==3)
- {
- cout<<"Enter value"<<endl;
- int p;
- cin>>p;
- linear_enqueue(q,rear,q_max,p);
- }
- else
- linear_dequeue(q,rear,frnt);
- display(q,rear,frnt,q_max);
- cout<<"\n";
- }
- else if(n==2)
- {
- cout<<"Enter 3 to enqueue and 4 to dequeue"<<endl;
- int b;
- cin>>b;
- if(b==3)
- {
- cout<<"Enter value"<<endl;
- int p;
- cin>>p;
- circular_enqueue(q,rear,q_max,p,cnt);
- }
- else
- circular_dequeue(q,rear,frnt,cnt,q_max);
- display(q,rear,frnt,q_max);
- cout<<"\n";
- }
- else
- return 0;
- }
- }
Add Comment
Please, Sign In to add comment