### Шаги для решения задачи:
1. **Создать стек и заполнить его входными данными.**
2. **Найти максимальное и минимальное числа в стеке.**
3. **Создать новую структуру данных для итогового результата (используем очередь для перемежения элементов).**
4. **Проходясь по исходному стеку, перед максимальным числом вставить минимальное.**
5. **Вывести результат.**
### Реализация на C++:
#include
#include
#include
#include
#include
int main() {
// Входные данные
std::vector input = {2, 8, 4, 1, 2, 8, 8, 1, 2, 8};
// Создаем стек и заполняем его входными данными
std::stack s;
for (int num : input) {
s.push(num);
}
// Найдем максимальное и минимальное числа
int maxNum = *std::max_element(input.begin(), input.end());
int minNum = *std::min_element(input.begin(), input.end());
// Создаем очередь для результата
std::queue result;
// Используем временный стек для восстановления порядка
std::stack tempStack;
while (!s.empty()) {
tempStack.push(s.top());
s.pop();
}
// Создаем стек для обработки
while (!tempStack.empty()) {
int current = tempStack.top();
tempStack.pop();
if (current == maxNum) {
result.push(minNum);
}
result.push(current);
}
// Вывод результата
while (!result.empty()) {
std::cout << result.front() << " ";
result.pop();
}
std::cout << std::endl;
return 0;
}
### Объяснение кода:
1. Заполнение стека:
- Используем вектор input для хранения исходных данных.
- Заполняем стек s элементами из input.
2. Нахождение максимального и минимального чисел:
- Используем функции std::max_element и std::min_element для нахождения максимального и минимального чисел в векторе input.
3. Восстановление порядка с использованием временного стека:
- Перемещаем элементы из стека s в временный стек tempStack, чтобы восстановить порядок вставки.
4. Обработка элементов:
- Перемещаем элементы из временного стека tempStack в очередь result, вставляя минимальное число перед каждым максимальным числом.
5. Вывод результата:
- Извлекаем и выводим элементы из очереди result.
Этот метод сохраняет порядок элементов и выполняет вставку минимального числа перед каждым максимальным числом, что соответствует заданному условию.
Тема: Стеки и очереди
Создать стек, содержащий целые числа. Перед всеми максимальными числами вставить минимальное число. Порядок следования в результате должен совпадать с порядком следования ввода. Проверка на тестовых данных: Вход - 2 8 4 1 2 8 8 1 2 8. Выход - 2 1 8 4 1 2 1 8 1 8 1 2 1 8