Advertisement
Guest User

Untitled

a guest
Jan 24th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.31 KB | None | 0 0
  1. /*
  2.  * Queue.h
  3.  *
  4.  *  Created on: 24.01.2017
  5.  *      Author: Jays
  6.  */
  7.  
  8. #ifndef QUEUE_H_
  9. #define QUEUE_H_
  10.  
  11. #include <iostream>
  12. #include <iterator>
  13. #include <stdexcept>
  14.  
  15. using namespace std;
  16.  
  17. template <class TYPE>
  18. class Queue {
  19. private:
  20.     int size;
  21.     int count;
  22.     TYPE* pData;
  23.     int top,bottom;
  24.     void resize(int input);
  25. public:
  26.     Queue();
  27.     Queue(const Queue<TYPE>& q);
  28.     Queue(Queue<TYPE>&& q);
  29.     ~Queue();
  30.     Queue<TYPE>& operator=(const Queue<TYPE>& q);
  31.     Queue<TYPE>& operator=(Queue<TYPE>&& q);
  32.     void enqueue(TYPE value);
  33.     TYPE dequeue();
  34.  
  35. //class QueueIterator: public iterator<std::forward_iterator_tag,TYPE{
  36. //
  37. //  QueueIterator(TYPE* pAct= nullptr):pAct(pAct){}
  38. //
  39. //
  40. //}
  41. };
  42.  
  43. template<class TYPE>
  44. inline Queue<TYPE>::Queue(){
  45.  
  46.     size = 4;
  47.     count = 0;
  48.     pData = new TYPE[size];
  49.     top = 0;
  50.     bottom = -1;
  51. }
  52.  
  53. template<class TYPE>
  54. inline Queue<TYPE>::Queue(const Queue<TYPE>& q){
  55.     size = q.size;
  56.     count = q.count;
  57.     pData = new TYPE[size];
  58.     for(int i=0;i<size;i++){
  59.         pData[i]=q.pData[i];
  60.     }
  61.     top = q.top;
  62.     bottom = q.bottom;
  63. }
  64.  
  65. template<class TYPE>
  66. inline Queue<TYPE>::Queue(Queue<TYPE>&& q){
  67.     size = q.size;
  68.     count = q.count;
  69.     pData = q.pData;
  70.     top = q.top;
  71.     bottom = q.bottom;
  72.     q.size = 0;
  73.     q.bottom = 0;
  74.     q.count = 0;
  75.     q.pData = nullptr;
  76.     q.top = 0;
  77. }
  78.  
  79. template<class TYPE>
  80. inline Queue<TYPE>::~Queue(){
  81.     delete[] pData;
  82. }
  83.  
  84. template<class TYPE>
  85. inline Queue<TYPE>& Queue<TYPE>::operator=(const Queue& q){
  86.  
  87. }
  88. template<class TYPE>
  89. inline Queue<TYPE>& Queue<TYPE>::operator=(Queue&& q){
  90.  
  91. }
  92. template<class TYPE>
  93. inline void Queue<TYPE>::enqueue(TYPE value){
  94.     if(top==bottom){
  95.         resize(size*2);
  96.         top=count;
  97.     }
  98.     pData[top] = value;
  99.     if(bottom==-1)
  100.         bottom= top;
  101.     if(top+1>=size)
  102.         top = 0;
  103.     else
  104.         top+=1;
  105.     cout<< top<<endl;
  106.     cout<< size<<endl;
  107.     count++;
  108. }
  109.  
  110. template<class TYPE>
  111. inline TYPE Queue<TYPE>::dequeue(){
  112.     cout <<bottom;
  113.     int ret = bottom;
  114.     if(bottom+1!=top)
  115.         bottom+=1;
  116.     if(bottom>=size&&top!=0)
  117.         bottom = 0;
  118.     else
  119.         bottom = -1;
  120.     count--;
  121.     return pData[ret];
  122. }
  123. template<class TYPE>
  124. inline void Queue<TYPE>::resize(int input){
  125.     if(input<=size)
  126.         throw std::out_of_range("blah");
  127.     TYPE* neu= new TYPE[input];
  128.     for(int i=0;i<size;i++){
  129.         neu[i]=pData[i];
  130.     }
  131.     size = input;
  132.     delete[] pData;
  133.     pData = neu;
  134.  
  135. }
  136.  
  137.  
  138. #endif /* QUEUE_H_ */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement