Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
1.85 Кб
Скачать
#include <iostream>
#include <windows.h>
using namespace std;

class IntStack {
private:
    int* data;
    int capacity;
    int topIndex;
    
public:
    IntStack(int maxSize) : capacity(maxSize), topIndex(-1) {
        data = new int[capacity];
        cout << "Создан стек вместимостью " << maxSize << " элементов" << endl;
    }
    
    ~IntStack() {
        delete[] data;
    }
    
    void push(int value) {
        if (!full()) {
            data[++topIndex] = value;
            cout << "Добавлен элемент: " << value << endl;
        } else {
            cout << "Ошибка: стек полон!" << endl;
        }
    }
    
    int pop() {
        if (!empty()) {
            int value = data[topIndex--];
            cout << "Извлечен элемент: " << value << endl;
            return value;
        }
        cout << "Ошибка: стек пуст!" << endl;
        return -1;
    }
    
    bool empty() {
        return topIndex == -1;
    }
    
    bool full() {
        return topIndex == capacity - 1;
    }
    
    void printStatus() {
        cout << "Стек " << (empty() ? "пуст" : "не пуст") << ", " 
             << (full() ? "полон" : "есть свободное место") << endl;
    }
};

int main() {
    SetConsoleOutputCP(65001);
    
    IntStack stack(3);
    stack.printStatus();
    
    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.push(4); // ошибка - стек полон
    
    stack.printStatus();
    
    cout << "Извлечение элементов из стека:" << endl;
    while (!stack.empty()) {
        stack.pop();
    }
    
    stack.pop(); // ошибка - стек пуст
    
    return 0;
}
Соседние файлы в папке Лаба2