15. История экранов приложения

☰ Теория

Стек Stack<T>

Что хранит. Хранит элементы как стопку. Первым извлекается последний добавленный элемент: LIFO.

Для чего используют. Подходит для возврата к предыдущему экрану, отмены изменений и хранения истории состояний.

Основные операции

Запись на C#Назначение
s.Push(x)Положить x на вершину.
s.Pop()Вернуть и удалить верхний элемент.
s.Peek()Прочитать вершину без удаления.
s.CountЧисло элементов.
s.Clear()Удалить все элементы.
s.ToArray()Получить массив от вершины к основанию стека.

Пример

Для примера нужны using System; и using System.Collections.Generic;. Код выполняется внутри Main.

Stack<int> history = new Stack<int>();
history.Push(10);
history.Push(20);
Console.WriteLine(history.Peek());
Console.WriteLine(history.Pop());
Console.WriteLine(history.Peek());

Вывод:

20
20
10

Важно. Перед Peek и Pop проверьте Count > 0. Для отмены сохраняют данные предыдущего состояния. Обычный перебор стека идёт от последнего добавленного элемента к первому.

Для этой задачи

  • Главный экран. Первую запись истории сохраняйте: возврат допустим только при Count > 1.

Приложение начинается на главном экране home. Команда OPEN открывает новый экран поверх текущего, даже если имя совпадает с текущим. BACK закрывает только последний открытый экран. Начальный экран закрывать нельзя: на нём BACK ничего не меняет. После каждой команды нужно показать имя текущего экрана.

Команды

КомандаДействие и ответ
OPEN nameДобавить в историю новый экран с именем name.
BACKВернуться к предыдущей записи истории, если она есть.
CURRENTНе менять историю; показать текущий экран.

Входные данные

В первой строке записано q. Далее идут q команд, по одной в строке.

Выходные данные

После каждой команды, включая CURRENT, выведите имя текущего экрана.

Не выводите приглашения к вводу и пояснения. Служебные слова в ответах пишите в указанном регистре.

Ограничения

1 ≤ q ≤ 100000; имя экрана содержит 1–20 строчных латинских букв. Имя home разрешено и в OPEN: такой экран является обычной новой записью истории.

Примеры
Входные данныеВыходные данные
1
7
CURRENT
OPEN catalog
OPEN product
BACK
BACK
BACK
CURRENT
home
catalog
product
catalog
home
home
home
2
5
OPEN catalog
OPEN home
BACK
BACK
BACK
catalog
home
catalog
home
home

Напишите программу
Auto
       

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам