Advertisement
Phr0zen_Penguin

LinkedQueue.h - VTC C++ Binary Search Tree Linked Queue

May 19th, 2015
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.83 KB | None | 0 0
  1. /**
  2.  * [LinkedQueue.h]
  3.  * The LinkedQueue class declaration/specification.
  4.  */
  5.  
  6. #ifndef LINKEDQUEUE_H
  7. #define LINKEDQUEUE_H
  8.  
  9. /**
  10.  * Node STRUCTURE:
  11.  * Used to created nodes for the linked queue.
  12.  */
  13. template <class ItemType>
  14. struct Node
  15. {
  16.     ItemType    element;
  17.     Node        *next;
  18. };
  19.  
  20.  
  21. template <class ItemType>
  22. class LinkedQueue
  23. {
  24.     /**
  25.      * Everything under public can be accessed by all other programs or classes.
  26.      */
  27.     public:
  28.         /**
  29.          * Constructor(s):
  30.          */
  31.         LinkedQueue();
  32.  
  33.         /**
  34.          * Destructor:
  35.          */
  36.         ~LinkedQueue();
  37.  
  38.         /**
  39.          * Mutators:
  40.          */
  41.         void Enqueue(ItemType item);
  42.  
  43.         /**
  44.          * Accessors:
  45.          */
  46.         void Dequeue(ItemType &item);
  47.  
  48.         /**
  49.          * General Use:
  50.          */
  51.         void MakeEmpty(void);
  52.         bool IsEmpty(void);
  53.         bool IsFull(void);
  54.  
  55.  
  56.     /**
  57.      * Everything under protected can be accessed only by the class itself or (derived) subclasses,
  58.      * as in the case of inheritance.
  59.      */
  60.     protected:
  61.  
  62.  
  63.     /**
  64.      * (Private) DATA MEMBERS/PROPERTIES:
  65.      *
  66.      * Everything under private can only be accessed by the class itself (the code in the
  67.      * implementation file).
  68.      */
  69.     private:
  70.         Node<ItemType>  *lq_front;
  71.         Node<ItemType>  *lq_rear;
  72. };
  73.  
  74. #endif // LINKEDQUEUE_H
  75.  
  76.  
  77. /**
  78.  * The LinkedQueue class definition/implementation.
  79.  */
  80.  
  81. /**
  82.  * LinkedQueue CLASS CONSTRUCTOR(s):
  83.  */
  84. template <class ItemType>
  85. LinkedQueue<ItemType>::LinkedQueue()
  86. {
  87.     lq_front = 0;
  88.     lq_rear = 0;
  89. }
  90.  
  91.  
  92. /**
  93.  * LinkedQueue CLASS MUTATORS:
  94.  */
  95. template <class ItemType>
  96. void LinkedQueue<ItemType>::Enqueue(ItemType item)
  97. {
  98.     Node<ItemType>  *newNode = new Node<ItemType>();
  99.  
  100.     newNode->element = item;
  101.     newNode->next = 0;
  102.  
  103.         if(lq_rear == 0)
  104.             lq_front = newNode;
  105.         else
  106.             lq_rear->next = newNode;
  107.  
  108.     lq_rear = newNode;
  109. }
  110.  
  111.  
  112. /**
  113.  * LinkedQueue CLASS ACCESSORS:
  114.  */
  115. template <class ItemType>
  116. void LinkedQueue<ItemType>::Dequeue(ItemType &item)
  117. {
  118.     Node<ItemType>  *pTemp;
  119.  
  120.     pTemp = lq_front;
  121.     item = lq_front->element;
  122.     lq_front = lq_front->next;
  123.  
  124.         if(lq_front == 0)
  125.             lq_rear = 0;
  126.  
  127.     delete pTemp;
  128. }
  129.  
  130.  
  131. /**
  132.  * LinkedQueue CLASS GENERAL USE FUNCTIONS:
  133.  */
  134. template <class ItemType>
  135. void LinkedQueue<ItemType>::MakeEmpty(void)
  136. {
  137.     Node<ItemType>  *pTemp;
  138.  
  139.         while(lq_front != 0)
  140.         {
  141.             pTemp = lq_front;
  142.             lq_front = lq_front->next;
  143.  
  144.             delete pTemp;
  145.         }
  146.  
  147.     lq_rear = 0;
  148. }
  149.  
  150. template <class ItemType>
  151. bool LinkedQueue<ItemType>::IsEmpty(void)
  152. {
  153.     return(lq_front == 0);
  154. }
  155.  
  156. template <class ItemType>
  157. bool LinkedQueue<ItemType>::IsFull(void)
  158. {
  159.     Node<ItemType>  *pTemp = new Node<ItemType>();
  160.  
  161.         if(pTemp == 0)
  162.             return true;
  163.         else
  164.         {
  165.             delete pTemp;
  166.  
  167.             return false;
  168.         }
  169. }
  170.  
  171.  
  172. /**
  173.  * LinkedQueue CLASS DESTRUCTOR:
  174.  */
  175. template <class ItemType>
  176. LinkedQueue<ItemType>::~LinkedQueue()
  177. {
  178.     MakeEmpty();
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement