e-olymp 6122. Простой стек

Задача

Формулировка задания на e-olymp.

Реализуйте структуру данных «стек». Напишите программу, содержащую описание стека и моделирующую работу стека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:

  • push n — Добавить в стек число n (значение n задается после команды). Вывести ok.
  • pop — Удалить из стека последний элемент. Программа должна вывести его значение.
  • back — Вывести значение последнего элемента, не удаляя его из стека.
  • size — Вывести количество элементов в стеке.
  • clear — Очистить стек и вывести ok.
  • exit — Вывести bye и завершить работу.

Гарантируется, что набор входных команд удовлетворяет следующим требованиям: максимальное количество элементов в стеке в любой момент не превосходит 100, все команды pop и back корректны, то есть при их исполнении в стеке содержится хотя бы один элемент.

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

Каждая строка содержит одну команду.

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

Для каждой команды вывести в отдельной строке соответствующий результат.

Тесты

 Входные данные  Выходные данные
            push 2                             push 3                             push 5                              back                                 size                                   pop                                 size                                  push 7                             pop                                clear                                 size                                   exit                     ok                                       ok                                       ok                                        5                                        3                                        5                                        2                                       ok                                        7                                       ok                                        0                                      bye

Отмечу так же, что программа успешно прошла все тесты на сайте e-olymp со следующими результатами.

Решение

Проверить работу кода можно в облаке по ссылке — Ideone.

Пояснения

Структура класса Stack из себя представляет следующее:

  • Динамический массив   storage  типа  Vector<Integer> , который, по сути, и является хранилищем элементов стека;
  • Конструктор, в котором происходит инициализация вектора  storage ;
  • Метод  push(int number)  типа void , который принимает как параметр число, и заносит это число в стек;
  • Метод  pop()  типа  int , который возвращает значение верхнего элемента стека и извлекает его;
  • Метод  back()  типа  int , который возвращает значение верхнего элемента стека, без его извлечения;
  • Метод  size() , который возвращает количество элементов, находящихся в стеке;
  • Метод  clear() , который очищает стек;
  • Метод exit()  типа String , который возвращает строку «bye».

3 thoughts on “e-olymp 6122. Простой стек

  1. Основная идея этого упражнения была в реализации стека «с нуля». Т.е. сделать это на основе массива или связного списка. Вы использовали класс Vector, который уже включает в себе реализацию стека на основе массива. Но я засчитываю работу т.к. она демонстрирует реализацию одного из шаблонов проектирования — делегирование.

    Небольшое замечание. Не публикуйте ссылки с текстом, который не предназначен для чтения и запоминания читателем. Т.е. URL (например, http://ideone.com/o5byqF) не должен быть виден. Вы видите как я чделал ссылку на делегирование выше?

    • Спасибо за Вашу конкретику и конструктивное объяснение основной идеи данного упражнения. Оформление задачи было выполнено по примеру оформления самой первой задачи «Hello, World!». Ваше замечание было учтено и исправлено. Впредь буду осмотрительнее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *