#include #include using namespace std; class Stack { private: int place; // закрытая часть класса с перменной и указателями int stak; int *star; public: int Stak () { place = 0 ; // конструктор , плайс начало отсчета в массив, тобишь 0 ячейка stak = 1; // будующий массив с2 ячейками 0 и 1 star = new int[stak]; // выделения памяти под 2 ячейки } void put(int dat) { if (place < stak) // если индекс ячейки куда я вкладываю меньше выосты массива (первый раз в 2 элемента) то смотри ниже { star[place++]= dat; // вкладываю данные в ячейку массива с индексом плейс } else // если ячеек в массиве не хватает { int mass = stak = place + 1; // увеличиваю высоту массива ,чтоб все вместилось в объект int *arr = new int [mass]; // создаю новый массив,выделяя на него память for (int i = 0 ; i < place ; i++) // копирую каждую ячейку в новый массив с увеличиной высотой { arr[i] = star[i]; } delete [] star; // удаляю старый массив, т.к. он был мал star = arr; // использую указатель на новый масиив arr star[place++] = dat; // вношу данный с мейне } } void pop() { int mas = stak = --place; // новая высота , т.к. удаляю int *ar = new int[mas]; // создаю новый массив с уменьшинйо высотой for (int i = 0; i < place ; i++) { ar[i] = star[i]; // копирую массив по элмемента } delete [] star; // очищаю память от старого массива , вот именно тут я удалил эелент, т.к. не скопировал его в новый массив star = ar; // создаю указатель на новый массив ar } void conclusion () { for (int i = 0; i < place; i++) // вывод элементов до вершины тех єлементов что я вложил, если сделать до stak то до вершины cout <<"Elements " << i << " is " << star[i]<< endl; } void del() { delete [] star; // удаляю все } }; int main() { Stack Stk1; // создаю объект класса с названием Stk1 Stack Stk2; // смотри выше Stk1.Stak(); // функия класса которая выделяет память, написано в функции класса описание Stk2.Stak(); // смотри выше Stk1.put(1); // функция класса переношу 1 == переменной int dat (в функции put) Stk1.put(2); Stk1.put(3); Stk1.put(4); Stk1.put(5); Stk1.pop(); // удаление Stk1(вершины массива) смотри функцию удаления Stk1.put(6); Stk1.pop(); Stk1.put(7); Stk1.put(8); Stk1.put(9); Stk1.pop(); Stk2.put(10); Stk2.put(11); Stk2.put(12); Stk2.put(13); Stk2.put(14); Stk2.put(15); Stk2.put(16); Stk2.put(17); Stk2.put(18); Stk2.put(19); Stk2.put(20); Stk1.conclusion(); // функция вывода класса(массива) Stk2.conclusion(); Stk2.del(); // чистка памяти, вызво функции класса которая это делает. Stk1.del(); return 0; }