Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба8 / Laba 9 (3)
.cpp#include <iostream>
#include <vector>
#include <locale>
using namespace std;
class IntersectingStacks {
private:
vector<int> data;
int x_top, y_top; // Вершины стеков
int common_index; // Общий элемент
public:
IntersectingStacks() : x_top(-1), y_top(-1), common_index(-1) {}
// Добавление в стек X
void pushX(int value) {
if (data.empty()) {
data.push_back(value);
x_top = y_top = common_index = 0;
} else {
data.insert(data.begin() + x_top + 1, value);
x_top++;
if (y_top >= x_top) y_top++;
if (common_index >= x_top) common_index++;
}
}
// Добавление в стек Y
void pushY(int value) {
if (data.empty()) {
data.push_back(value);
x_top = y_top = common_index = 0;
} else {
data.insert(data.begin() + y_top + 1, value);
y_top++;
if (x_top >= y_top) x_top++;
if (common_index >= y_top) common_index++;
}
}
// Удаление из стека X
int popX() {
if (x_top == -1) return -1;
int value = data[x_top];
if (x_top == common_index) {
// Удаляем общий элемент
if (y_top == common_index) {
data.clear();
x_top = y_top = common_index = -1;
} else {
data.erase(data.begin() + x_top);
y_top--;
x_top = common_index = y_top;
}
} else {
data.erase(data.begin() + x_top);
if (y_top > x_top) y_top--;
if (common_index > x_top) common_index--;
x_top--;
}
return value;
}
// Просмотр стеков
void print() const {
if (data.empty()) {
cout << "Стеки пусты" << endl;
return;
}
cout << "Стек X: ";
for (int i = 0; i <= x_top; i++) {
if (i == common_index) cout << "[" << data[i] << "] ";
else cout << data[i] << " ";
}
cout << endl;
cout << "Стек Y: ";
for (int i = 0; i <= y_top; i++) {
if (i == common_index) cout << "[" << data[i] << "] ";
else cout << data[i] << " ";
}
cout << endl;
}
};
int main() {
setlocale(LC_ALL, "ru_RU.UTF-8");
IntersectingStacks stacks;
stacks.pushX(1);
stacks.pushX(2);
stacks.pushY(3);
stacks.pushY(4);
cout << "Пересекающиеся стеки:" << endl;
stacks.print();
return 0;
}
Соседние файлы в папке Лаба8
