Advertisement
Masturbjorn

Стек на массиве

Apr 15th, 2021 (edited)
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. class Stack
  4. {
  5. private:
  6.     int size;
  7.     float* array;
  8. public:
  9.     Stack();
  10.     ~Stack();
  11.  
  12.     void push_back(float value);
  13.     void pop_back();
  14.     bool is_empty() { return !size; };
  15.     float top_value() { if (size > 0) { return array[size - 1]; } else { std::cout << "Error. The stack is empty." << std::endl; return 0; } };
  16.     void print_stack();
  17.  
  18. };
  19. Stack::Stack() {
  20.     array = new float[0];
  21.     size = 0;
  22. }
  23.  
  24. Stack::~Stack() {
  25.     while (size) {
  26.         pop_back();
  27.     }
  28. }
  29.  
  30. void Stack::push_back(float value) {
  31.     size++;
  32.     float* tmp = new float[size];
  33.     for (int i = 0; i < size - 1; i++) {
  34.         tmp[i] = array[i];
  35.     }
  36.     tmp[size - 1] = value;
  37.     delete[] array;
  38.     array = tmp;
  39. }
  40.  
  41. void Stack::pop_back() {
  42.     if (size > 0) {
  43.         size--;
  44.         float* tmp = new float[size];
  45.         for (int i = 0; i < size; i++) {
  46.             tmp[i] = array[i];
  47.         }
  48.         delete[] array;
  49.         array = tmp;
  50.     }
  51. }
  52. void Stack::print_stack() {
  53.     for (int i = 0; i < size; i++) {
  54.         std::cout << array[i] << " ";
  55.     }
  56.     std::cout << std::endl;
  57. }
  58.  
  59. int main()
  60. {
  61.     Stack st;
  62.     st.push_back(1);
  63.     st.push_back(2);
  64.     st.push_back(3);
  65.     std::cout << st.top_value() << std::endl;
  66.     st.pop_back();
  67.     st.print_stack();
  68.     std::cout << st.is_empty() << std::endl;
  69.     st.pop_back();
  70.     st.pop_back();
  71.     std::cout << st.is_empty() << std::endl;
  72.     st.pop_back();
  73.     std::cout << st.top_value() << std::endl;
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement