Advertisement
CyberN00b

Untitled

Jan 7th, 2023
1,170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1.  
  2. class Queue{
  3. public:
  4.  
  5.     Queue(int size = 1) {
  6.         N_op = 0;
  7.         length = size;
  8.         arr = new int[size];
  9.         begin = 0;
  10.         count = 0;
  11.         end = -1;
  12.     }
  13.  
  14.     ~Queue() {
  15.         delete []arr;
  16.     }
  17.  
  18.     void push(int val) {
  19.         if (length == count)
  20.             resize(length * 2);
  21.         ++end %= length;
  22.         arr[end] = val;
  23.         count++;
  24.     }
  25.  
  26.     void pop(){
  27.         if(!empty()) {
  28.             ++begin %= length;
  29.             count--;
  30.         } else
  31.             cout << "очередь пуста!\n";
  32.     }
  33.  
  34.     int front(){
  35.         if(!empty())
  36.             return arr[begin];
  37.         else
  38.             cout << "очередь пуста!\n";
  39.     }
  40.  
  41.     void resize(int new_size) {
  42.         int *arr2 = arr;
  43.         arr = new int[new_size];
  44.         for(int i = 0; i < length; ++i){
  45.             arr[i] = arr2[(i + begin) % length];
  46.         }
  47.         begin = 0;
  48.         end = length - 1;
  49.         length = new_size;
  50.         delete []arr2;
  51.     }
  52.  
  53.     bool empty() {
  54.         return size() == 0;
  55.     }
  56.  
  57.     int size() {
  58.         return length;
  59.     }
  60.  
  61.  
  62.     void print() {
  63.         for(int i = begin; i < begin + count; ++i)
  64.             cout << arr[i % length] << ' ';
  65.         cout << endl;
  66.     }
  67.  
  68.     int N_op;
  69.  
  70. private:
  71.     int *arr;
  72.     int length;
  73.     int begin;
  74.     int end;
  75.     int count;
  76. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement