В этой задаче вам нужно реализовать стек ограниченного размера. Этот стек работает как обычный стек, однако при превышении максимального размера удаляет самый глубокий элемент в стеке. Таким образом в стеке всегда будет ограниченное число элементов.
Вот пример работы такого стека с ограничением в 2 элемента:
// сначала стек пуст
stack.Push(10); // в стеке 10
stack.Push(20); // в стеке 10, 20
stack.Push(30); // в стеке 20, 30
stack.Push(40); // в стеке 30, 40
stack.Pop(); // возвращает 40, в стеке остаётся 30
stack.Pop(); // возвращает 30, стек после этого пуст
Операция Push должна иметь сложность O(1), то есть никак не зависеть от размера стека.
Скачайте проект LimitedSizeStack. Реализуйте класс LimitedSizeStack.
Отладьте его реализацию с помощью тестов в классе LimitedSizeStack_should. Проверьте эффективность операции Push с помощью теста из класса LimitedSizeStack_PerformanceTest.
У каждой коллекции в C# доступен метод расширения Last(). Однако, работает он за O(1) только для коллекций, реализующих интерфейс IList (список с доступом к элементам по индексу). Для остальных коллекций он работает за O(N), перебирая её элементы до конца. Будьте осторожны.
// Вставьте сюда финальное содержимое файла LimitedSizeStack.cs
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |