В заданном стеке найти максимальный элемент и удалить все элементы с таким значением - PascalABC.NET
Формулировка задачи:
В заданном стеке найти максимальный элемент и удалить все элементы с таким значением. (Искать, перекладывая в дополнительный стек, удалять при перекладывании обратно: [7, -3, 3, 7], получили [-3,3]
Решение задачи: «В заданном стеке найти максимальный элемент и удалить все элементы с таким значением»
textual
Листинг программы
begin var s := New Stack<integer>; var v : Integer; WriteLn('Введите элементы стека (окончание ввода - 0) :'); repeat v := ReadInteger; if v <> 0 then s.Push(v); until v = 0; if s.Count = 0 then begin WriteLn('Ну мы не можем работать с пустым стеком!'); Halt; end; WriteLn('Сформирован стек:'); s.Println; var t := New Stack<integer>; v := s.Peek; while s.Count > 0 do begin if v < s.Peek then v := s.Peek; t.Push(s.Pop); end; WriteLn('Максимальный элемент стека = ', v); while t.Count > 0 do if v = t.Peek then t.Pop else s.Push(t.Pop); WriteLn('Стек с удалёнными максимальными значениями:'); s.Println; end.
Объяснение кода листинга программы
В данном коде используется стек, в котором хранятся целые числа. Пользователю предлагается ввести элементы стека, после чего выводится сообщение о сформированном стеке. Затем из стека извлекается максимальный элемент, и все элементы со значением равным максимальному удаляются из стека. В конце выводится сообщение о стеке, из которого были удалены все элементы с максимальным значением. Код можно разделить на следующие части:
- Создание пустого стека и переменной для хранения максимального элемента.
- Ввод элементов стека с помощью цикла и проверка на пустой стек.
- Вывод сообщения о сформированном стеке.
- Создание нового стека для хранения элементов, которые не являются максимальными.
- Извлечение максимального элемента из стека.
- Удаление всех элементов со значением равным максимальному.
- Вывод сообщения о стеке, из которого были удалены все элементы с максимальным значением.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д