Adrita

task 1( ds lab 5) 3rd sem

Feb 17th, 2020
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. void linear_enqueue(int q[],int &rear,int queue_max,int item)
  4. {
  5. if(rear==queue_max)
  6. cout<<"Overflow"<<endl;
  7. else
  8. {
  9. q[rear]=item;
  10. rear++;
  11. }
  12. }
  13. int linear_dequeue(int q[],int rear,int &frnt)
  14. {
  15. int item;
  16. if(rear==frnt)
  17. cout<<"Underflow"<<endl;
  18. else
  19. {
  20. item=q[frnt];
  21. frnt++;
  22. }
  23. return item;
  24. }
  25. void circular_enqueue(int q[],int &rear,int queue_max,int item,int &cnt)
  26. {
  27. if(cnt==queue_max)
  28. cout<<"Overflow"<<endl;
  29. else
  30. {
  31. q[rear]=item;
  32. rear=(rear+1)%queue_max;
  33. cnt++;
  34. }
  35. }
  36. int circular_dequeue(int q[],int rear,int &frnt,int &cnt,int queue_max)
  37. {
  38. int item;
  39. if(cnt==0)
  40. cout<<"Underflow"<<endl;
  41. else
  42. {
  43. item=q[frnt];
  44. cnt--;
  45. frnt=(frnt+1)%queue_max;
  46. }
  47. return item;
  48. }
  49. void display(int q[],int rear,int frnt,int queue_max)
  50. {
  51. for(int i=frnt;i!=rear;i=(i+1)%queue_max)
  52. cout<<q[i]<<" ";
  53. }
  54. int main()
  55. {
  56. int q_max,rear=0,frnt=0,cnt=0;
  57. cin>>q_max;
  58. int q[q_max];
  59. cout<<"Enetr 1 for linear queue, 2 for circular queue and 0 to exit"<<endl;
  60. int n;
  61. cin>>n;
  62. while(1)
  63. {
  64. if(n==1)
  65. {
  66. cout<<"Enter 3 to enqueue and 4 to dequeue"<<endl;
  67. int a;
  68. cin>>a;
  69. if(a==3)
  70. {
  71. cout<<"Enter value"<<endl;
  72. int p;
  73. cin>>p;
  74. linear_enqueue(q,rear,q_max,p);
  75. }
  76. else
  77. linear_dequeue(q,rear,frnt);
  78.  
  79. display(q,rear,frnt,q_max);
  80. cout<<"\n";
  81. }
  82. else if(n==2)
  83. {
  84. cout<<"Enter 3 to enqueue and 4 to dequeue"<<endl;
  85. int b;
  86. cin>>b;
  87. if(b==3)
  88. {
  89. cout<<"Enter value"<<endl;
  90. int p;
  91. cin>>p;
  92. circular_enqueue(q,rear,q_max,p,cnt);
  93. }
  94. else
  95. circular_dequeue(q,rear,frnt,cnt,q_max);
  96.  
  97. display(q,rear,frnt,q_max);
  98. cout<<"\n";
  99. }
  100. else
  101. return 0;
  102. }
  103. }
Add Comment
Please, Sign In to add comment