Advertisement
Guest User

Untitled

a guest
Apr 20th, 2014
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. #ifndef QUEUETP_H_
  2. #define QUEUETP_H_
  3.  
  4. template <typename Type>
  5. class QueueTP
  6. {
  7. private:
  8. struct Node { Type item; struct Node * next;};
  9. enum {Q_SIZE = 10};
  10. //Private class members
  11. Node * front;
  12. Node * rear;
  13. int items;
  14. const int qsize;
  15. //Preemptive definitions tro prevent public copying
  16. QueueTP(const QueueTP & q) : qsize(0) { }
  17. QueueTP & operator=(const QueueTP & q){return *this;}
  18. public:
  19. explicit QueueTP(int qs = Q_SIZE) : qsize(qs), front(NULL), rear(NULL), items(0) {};
  20. ~QueueTP();
  21. bool isempty() const;
  22. bool isfull() const;
  23. int queuecount() const;
  24. bool enqueue(const Type &item);
  25. bool dequeue(Type &item);
  26. };
  27. #endif
  28.  
  29. template <typename Type>
  30. QueueTP<typename Type>::~QueueTP()
  31. {
  32. Node * temp;
  33. while (front != NULL)
  34. {
  35. temp = front;
  36. front = front->next;
  37. delete temp;
  38. }
  39. }
  40.  
  41. template <typename Type>
  42. bool QueueTP<typename Type>::isempty() const
  43. {
  44. return items == 0;
  45. }
  46.  
  47. template <typename Type>
  48. bool QueueTP<typename Type>::isfull() const
  49. {
  50. return items == qsize;
  51. }
  52.  
  53. template <typename Type>
  54. int QueueTP<typename Type>::queuecount() const
  55. {
  56. return items;
  57. }
  58.  
  59. template <typename Type>
  60. bool QueueTP<typename Type>::enqueue(const Type & item)
  61. {
  62. if (isfull())
  63. return false;
  64. Node * add = new Node;
  65. if (add == NULL)
  66. return false;
  67. add->item = item;
  68. add->next = NULL;
  69. items++;
  70. if (front == NULL)
  71. front = add;
  72. else
  73. rear->next = add;
  74. rear = add;
  75. return true;
  76. }
  77.  
  78. template <typename Type>
  79. bool QueueTP<typename Type>::dequeue(Type & item)
  80. {
  81. if (front == NULL)
  82. return false;
  83. item = front->item;
  84. items--;
  85. Node * temp = front;
  86. front = front->next;
  87. delete temp;
  88. if (items == 0)
  89. rear = NULL;
  90. return true;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement