Masturbjorn

Дек на массивах

Apr 15th, 2021 (edited)
643
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*Дек без защиты от ошибок ес че*/
  2. #include <iostream>
  3. class Deque {
  4. private:
  5.     float* array;
  6.     int size;
  7. public:
  8.     Deque();
  9.     ~Deque();
  10.  
  11.     void print_deque();
  12.     bool is_empty() { return !size; };
  13.  
  14.     void push_back(float value);
  15.     void pop_back();
  16.     float top_value() { return array[size - 1]; };
  17.  
  18.     void push_front(float value);
  19.     void pop_front();
  20.     float bot_value() { return array[0]; };
  21. };
  22.  
  23. Deque::Deque() {
  24.     array = new float[0];
  25.     size = 0;
  26. }
  27. Deque::~Deque() {
  28.     while (size) {
  29.         pop_back();
  30.     }
  31. }
  32. void Deque::print_deque() {
  33.     for (int i = 0; i < size; i++) {
  34.         std::cout << array[i] << " ";
  35.     }
  36.     std::cout << std::endl;
  37. }
  38.  
  39. void Deque::push_back(float value) {
  40.     size++;
  41.     float* tmp = new float[size];
  42.     for (int i = 0; i < size - 1; i++) {
  43.         tmp[i] = array[i];
  44.     }
  45.     tmp[size - 1] = value;
  46.     delete[] array;
  47.     array = tmp;
  48. }
  49. void Deque::pop_back() {
  50.     size--;
  51.     float* tmp = new float[size];
  52.     for (int i = 0; i < size; i++) {
  53.         tmp[i] = array[i];
  54.     }
  55.     delete[] array;
  56.     array = tmp;
  57. }
  58.  
  59. void Deque::push_front(float value) {
  60.     size++;
  61.     float* tmp = new float[size];
  62.     for (int i = 0; i < size; i++) {
  63.         tmp[i + 1] = array[i];
  64.     }
  65.     tmp[0] = value;
  66.     delete[] array; //повторить это!!!
  67.     array = tmp;
  68. }
  69. void Deque::pop_front() {
  70.     size--;
  71.     float* tmp = new float[size];
  72.     for (int i = 1; i < size + 1; i++) {
  73.         tmp[i - 1] = array[i];
  74.     }
  75.     delete[] array;
  76.     array = tmp;
  77. }
  78.  
  79.  
  80. int main() {
  81.     Deque deck;
  82.     deck.push_back(1);
  83.     deck.push_back(2);
  84.     deck.push_front(3);
  85.     deck.push_front(4);
  86.     deck.print_deque();
  87.     std::cout << deck.bot_value() << std::endl;
  88.     std::cout << deck.top_value() << std::endl;
  89.     deck.pop_back();
  90.     deck.print_deque();
  91.     deck.pop_front();
  92.     deck.print_deque();
  93.     std::cout << deck.is_empty() << std::endl;
  94.     deck.pop_back();
  95.     deck.pop_back();
  96.     std::cout << deck.is_empty() << std::endl;
  97.  
  98.  
  99.     return 0;
  100. }
RAW Paste Data