Advertisement
Infiniti_Inter

myQueue

Apr 11th, 2019
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <exception>
  5.  
  6. #define myQueue
  7. #define myAlg
  8.  
  9. using namespace std;
  10.  
  11.  
  12.  
  13. #ifdef myQueue
  14. template<class T>
  15. class Queue {
  16.  
  17. struct Node {
  18.    
  19.     Node() {
  20.         next = NULL;
  21.     }
  22.     Node(T el, Node * node)
  23.     {
  24.         data = el;
  25.         next = node;
  26.     }
  27.     Node* next;
  28.     T data;
  29. }; 
  30.  
  31. Node* _top;
  32. Node* _front;
  33. int _size;
  34.    
  35. public:
  36.     Queue()
  37.     {
  38.        
  39.         _front = new Node();
  40.         _top = _front;
  41.         _size = 0;
  42.     }
  43.     ~Queue()
  44.     {
  45.         while (_front != NULL && _front->next != NULL)
  46.         {
  47.             Node* temp = _front;
  48.             _front = _front->next;
  49.             delete[] temp;
  50.         }
  51.     }
  52.  
  53.     void push(T el);
  54.     void pop();
  55.     T front();
  56.     int size();
  57.     T peek();
  58.  
  59.     bool empty();
  60.  
  61. };
  62. #endif // myQueue;
  63. #ifdef myAlg
  64. template<class T>
  65. int Queue<T>::size()
  66. {
  67.     return _size;
  68. }
  69.  
  70.  
  71. template<class T>
  72. bool Queue<T>::empty()
  73. {
  74.     return (!_size);
  75. }
  76.  
  77. template<class T>
  78. void Queue<T>::push(T el) {
  79.  
  80.    
  81.     _top->next = new Node(el, NULL);
  82.     _top = _top->next;
  83.     if (_size == 0)
  84.     {
  85.         _front = _top;
  86.     }
  87.     _size++;
  88. }
  89.  
  90. template<class T>
  91. T Queue<T>::front() {
  92.     return _front->data;
  93. }
  94.  
  95. template<class T>
  96. T Queue<T>::peek()
  97. {
  98.     if (_front == NULL || _front->next == NULL)
  99.         return NULL;
  100.     return _front->next->data;
  101. }
  102. template<class T>
  103. void Queue<T>::pop() {
  104.     if (!_size)return;
  105.     _front = _front->next;
  106.     _size--;
  107. }
  108.  
  109. #e
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement