holdveig

Реализация очереди с помощью массива. Хомутова Е.В. БПИ-203

Nov 29th, 2021
576
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. template <typename T>
  2. class Queue
  3. {
  4.   private:
  5.   T* arr;
  6.   int c;
  7.  
  8.  public:
  9.   Queue()
  10.   {
  11.     c = 0;
  12.   }
  13.  
  14.  Queue(const Queue& obj)
  15.  {
  16.      c = obj.c;
  17.      arr = new T[c];
  18.     for (int i = 0; i < c; i++)
  19.         arr[i] = obj.arr[i];
  20.  }
  21.  
  22.  void push(T item)
  23.   {
  24.     T* arr1;
  25.     arr1 = arr;
  26.  
  27.    
  28.     arr = new T[c + 1];
  29.  
  30.     for (int i = 0; i < c; i++) {
  31.         arr[i] = arr1[i];
  32.     }
  33.     item = arr[c];
  34.      c++;
  35.      if (c > 1)
  36.         delete[] arr2;
  37.   }
  38.  
  39. T pop()
  40.   {
  41.     if (c == 0){
  42.       return 0;
  43.     }
  44.  
  45.     T item;
  46.     item = arr[0];
  47.     T* arr1;
  48.     arr1 = new T[c - 1];
  49.     c--;
  50.     for (int i = 0; i < c; i++){
  51.         arr1[i] = arr[i + 1];
  52.     }
  53.  
  54.      if (c > 0){
  55.         delete[] arr;
  56.      }
  57.      arr = arr1;
  58.     return item;
  59.   }
  60.  
  61. Queue& operator=(const Queue& obj)
  62.   {
  63.     T* arr1;
  64.  
  65.     arr1 = new T[obj.c];
  66.  
  67.     if (c > 0) {
  68.         delete[] arr;
  69.     }
  70.      arr = arr1;
  71.      c = obj.c;
  72.    
  73.      for (int i = 0; i < c; i++) {
  74.         arr[i] = obj.arr[i];
  75.      }
  76.     return *this;
  77.   }
  78.  ~Queue()
  79.   {
  80.     if (c > 0){
  81.       delete[] arr;
  82.     }
  83.   }
  84.  T GetItem()
  85.   {
  86.     if (c > 0){
  87.       return arr[0];
  88.     }
  89.     else
  90.       return 0;
  91.   }
  92.  void clear()
  93.   {
  94.     if (c > 0)
  95.     {
  96.       delete[] arr;
  97.       c = 0;
  98.     }
  99.   }
  100. void print(const char* objName)
  101.   {
  102.     cout << "Object: " << objName << endl;
  103.     for (int i = 0; i < c; i++)
  104.       cout << arr[i] <<;
  105.   }
  106. }
RAW Paste Data