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

class Container {
protected:
    int* data;
    int capacity;
    int count;
public:
    Container(int cap) : capacity(cap), count(0) {
        data = new int[capacity];
    }
    virtual ~Container() {
        delete[] data;
    }
    virtual void push(int value) = 0;
    virtual int pop() = 0;
    virtual void print() const = 0;
};

class Stack : public Container {
    int top;
public:
    Stack(int cap) : Container(cap), top(-1) {}
    
    void push(int value) override {
        if (top < capacity - 1) {
            data[++top] = value;
            count++;
        }
    }
    
    int pop() override {
        if (top >= 0) {
            count--;
            return data[top--];
        }
        return -1;
    }
    
    void print() const override {
        cout << "Стек: ";
        for (int i = 0; i <= top; i++) {
            cout << data[i] << " ";
        }
        cout << endl;
    }
};

class Queue : public Container {
    int front, rear;
public:
    Queue(int cap) : Container(cap), front(0), rear(-1) {}
    
    void push(int value) override {
        if (count < capacity) {
            rear = (rear + 1) % capacity;
            data[rear] = value;
            count++;
        }
    }
    
    int pop() override {
        if (count > 0) {
            int value = data[front];
            front = (front + 1) % capacity;
            count--;
            return value;
        }
        return -1;
    }
    
    void print() const override {
        cout << "Очередь: ";
        for (int i = 0; i < count; i++) {
            cout << data[(front + i) % capacity] << " ";
        }
        cout << endl;
    }
};

int main() {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    
    Stack stack(5);
    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.print();
    
    cout << "Извлечено из стека: " << stack.pop() << endl;
    stack.print();
    
    Queue queue(5);
    queue.push(1);
    queue.push(2);
    queue.push(3);
    queue.print();
    
    cout << "Извлечено из очереди: " << queue.pop() << endl;
    queue.print();
    
    return 0;
}
Соседние файлы в папке Лаба5