fork download
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. class Queue
  5. {
  6. private:
  7. string *arr;
  8. int frnt,rear;
  9. int capacity;
  10. int size=0;
  11.  
  12. public:
  13. Queue(int cap)
  14. {
  15. capacity=cap;
  16. frnt=-1;
  17. rear=-1;
  18. arr=new string[capacity] ;
  19. }
  20.  
  21. void enqueue(string val)
  22. {
  23. if(isfull())
  24. {
  25.  
  26. cout<< "queue is full"<<endl;
  27.  
  28. }
  29. else{
  30. rear=(rear+1)%capacity;
  31. arr[rear]=val;
  32. if(frnt==-1) frnt=0;
  33. }
  34. size++;
  35. }
  36.  
  37. void dequeue()
  38. {
  39. if( isempty())
  40. {
  41. cout<< "queue is empty"<<endl;
  42. }
  43. else{
  44.  
  45. frnt=(frnt+1)%capacity;
  46. size--;
  47. }
  48.  
  49. }
  50. bool isfull()
  51. {
  52. if(size==capacity)
  53. return true;
  54. else
  55. return false;
  56.  
  57.  
  58. }
  59.  
  60. bool isempty()
  61. {
  62. if(size==0)
  63. return true;
  64. else
  65. return false;
  66. }
  67.  
  68. string getFront()
  69. {
  70. return arr[frnt];
  71. }
  72. int getsize()
  73. {
  74. return size;
  75. }
  76. void print()
  77. {
  78. if(isempty())
  79. {
  80. cout<< "queue is empty"<<endl;
  81. }
  82. int j=frnt;
  83. for(int i=0;i<size;i++)
  84. {
  85. cout<< arr[j]<< " ";
  86. j=(j+1)%capacity;
  87. }
  88. cout<<endl;
  89. }
  90.  
  91. void enqfront(string val)
  92. {
  93. if(isfull()) cout<< "overflow"<<endl;
  94. else if(frnt==-1)
  95. {
  96. frnt++;
  97. rear++;
  98. }
  99. else if(frnt==0) frnt=capacity-1;
  100. else frnt--;
  101. arr[frnt]=val;
  102. size++;
  103. }
  104.  
  105. void dqrear()
  106. {
  107. if(isempty())
  108. {
  109. cout<< "underflow"<<endl;
  110. }
  111. else if(rear==0) rear=capacity-1;
  112. else rear--;
  113. size--;
  114.  
  115. }
  116. };
  117.  
  118. int main()
  119. {
  120. Queue q(10);
  121. q.enqfront("violet");
  122. q.enqueue("apple");
  123. q.enqueue("mango");
  124. q.enqueue("red");
  125.  
  126. q.enqueue("green");
  127. q.enqueue("blue");
  128. q.enqueue("orange");
  129. q.enqfront("violet");
  130. q.print();
  131.  
  132. cout<<q.getsize()<<endl;
  133. q.dequeue();
  134. q.dequeue();
  135. q.dequeue();
  136.  
  137.  
  138. q.print();
  139. q.dqrear();
  140. q.print();
  141. string s=q.getFront();
  142. cout<<s<<endl;
  143.  
  144. cout<<q.getsize()<<endl;
  145. return 0;
  146. }
Success #stdin #stdout 0.01s 5292KB
stdin
Standard input is empty
stdout
violet violet apple mango red green blue orange 
8
mango red green blue orange 
mango red green blue 
mango
4