Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. #include <iostream>
  2. #include "a2_circular_queue_template.hpp"
  3.  
  4. template <>
  5. const int CircularQueue<int>::EMPTY_QUEUE = -999;
  6.  
  7. template <>
  8. const char CircularQueue<char>::EMPTY_QUEUE = ' ';
  9.  
  10. template <>
  11. const double CircularQueue<double>::EMPTY_QUEUE = -99.99;
  12.  
  13. template <>
  14. const std::string CircularQueue<std::string>::EMPTY_QUEUE = "- EMPTY -";
  15.  
  16. template<class Item>
  17. CircularQueue<Item>::CircularQueue()
  18. {
  19. head_=0;
  20. tail_=0;
  21. size_=0;
  22. capacity_=16;
  23. items_=new Item[capacity_];
  24. }
  25.  
  26. template<class Item>
  27. CircularQueue<Item>::CircularQueue(unsigned int capacity)
  28. {
  29. head_=0;
  30. tail_=0;
  31. size_=0;
  32. capacity_=capacity;
  33. items_=new Item[capacity_];
  34. }
  35.  
  36. template<class Item>
  37. CircularQueue<Item>::~CircularQueue()
  38. {
  39. head_=0;
  40. tail_=0;
  41. size_=0;
  42. delete []items_;
  43. items_=NULL;
  44. }
  45.  
  46. template<class Item>
  47. bool CircularQueue<Item>::empty() const
  48. {
  49. return size_==0;
  50. }
  51.  
  52. template<class Item>
  53. bool CircularQueue<Item>::full() const
  54. {
  55. return size_>=capacity_;
  56. }
  57.  
  58. template<class Item>
  59. int CircularQueue<Item>::size() const
  60. {
  61. return size_;
  62. }
  63.  
  64. template<class Item>
  65. bool CircularQueue<Item>::enqueue(Item value)
  66. {
  67. if(full())
  68. return false;
  69. else{
  70. items_[tail_]=value;
  71. tail_++;
  72. if(tail_>=capacity_)
  73. tail_=0;
  74. size_++;
  75. return true;
  76. }
  77. }
  78.  
  79. template<class Item>
  80. Item CircularQueue<Item>::dequeue()
  81. {
  82. Item result=EMPTY_QUEUE;
  83. if(!empty()){
  84. result=items_[head_];
  85. size_--;
  86. head_++;
  87. if(head_>=capacity_)
  88. head_=0;
  89. }
  90. return result;
  91. }
  92.  
  93. template<class Item>
  94. Item CircularQueue<Item>::peek() const
  95. {
  96. return empty()?EMPTY_QUEUE:items_[head_];
  97. }
  98.  
  99. template<class Item>
  100. void CircularQueue<Item>::print() const
  101. {
  102. std::cout<<"( -> "<<items_[0];
  103. for(int i=1;i<size_;i++){
  104. std::cout<<" <-> "<<items_[i];
  105. }
  106. std::cout<<" <- )"<<std::endl;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement