Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба5 / Laba 5 (4)
.cpp#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
