Поддерживаемая фокусная точка HL. Первая оценка 2027 целевой показатель; официальный PDF возвращает 403; ранее приобретенный краткий план является финальной оценкой 2026. Оставшиеся руководство, оценка и практические требования сохраняют свои зарегистрированные удержания.
Предварительные требования: прочитайте указанные количества и единицы измерения, используйте арифметику и нижеприведённые условия модели. Каждый урок осваивает собственный метод перед независимым переносом.
Это оригинальные или явно вымышленные учебные примеры, а не фактические измерения или завершённые оценочные исследования учащихся.
8.2
Абстрактные типы данных: контракт операций
Что могло бы объяснить это наблюдение?
Симуляция очереди требует обработки самого старого ожидающего элемента первым. Стек выдает самый свежий элемент первым, поэтому контракт операции имеет значение.
Начните с гипотезы. Укажите величины или признаки, которые вы будете сравнивать, затем определите, какие доказательства могут различить два объяснения.
Постройте модель
Абстрактный тип данных задает значения и операции независимо от конкретной реализации. Стек работает по принципу LIFO (последним пришел — первым ушел); очередь работает по принципу FIFO (первым пришел — первым ушел). Интерфейс коллекции требует определенного поведения для пустых и недопустимых операций.
стек: Абстрактный тип данных «последним вошел — первым вышел»; очередь: Абстрактный тип данных «первым вошел — первым вышел».
Выберите доказательства для проверки гипотезы
Выберите структуру для требуемого паттерна доступа. Сложность зависит от реализации и предположений: удаление первого элемента из массива со сдвигом отличается от перемещения указателя головы в очереди.
Выполните трассировку последовательности операций вручную, затем сравните программу с ожидаемыми состояниями. Протестируйте пустые, одинарные и повторяющиеся операции. Опишите поведение переполнения при фиксированной ёмкости.
Работайте с известными величинами
Укажите известные значения и их единицы измерения. Выберите соотношение, предположения которого подходят к данному случаю, затем преобразуйте формулу перед подстановкой.
Известно: добавление A, B и C в очередь, затем два удаления. A и B покидают очередь; C остаётся. После добавления D остаётся два элемента: C и D. Те же самые вставки в стек привели бы к удалению C, а затем B.
Пример:
Очередь изначально пуста, получает 7 элементов и удаляет 4. Найдите количество оставшихся элементов. Используйте ту же последовательность: известные величины → модель → соотношение → подстановка → единица и интерпретация.
Проверьте вывод и его границы применимости
ADT не является конкретной схемой расположения памяти. Очередь не сортирует элементы по приоритету, если её контракт не определяет приоритетную очередь.
Вернитесь к первоначальному наблюдению. Объясните, что подтверждает результат, при каких условиях он верен и каким образом можно проверить конкурирующее объяснение.
Предупреждение:
Каждая очередь автоматически сортирует элементы по приоритету. Это утверждение неверно: ADT не является конкретной схемой расположения памяти. Очередь не сортирует элементы по приоритету, если её контракт не определяет приоритетную очередь.
Ключевые моменты:
Абстрактные типы данных: контракт операции. Выберите структуру для требуемого шаблона доступа. Сложность зависит от реализации и допущений: удаление первого элемента из массива со сдвигом отличается от перемещения указателя головы в очереди.
Работоспособная трассировка и границы
from collections import deque
queue = deque()
queue.extend(["A", "B"])
print(queue.popleft())
queue.append("C")
print(queue.popleft())
print(list(queue))
queue.clear()
print(queue.popleft() if queue else "EMPTY")
Ожидаемый вывод:
A
B
['C']
EMPTY
Удаление слева реализует FIFO. Явный пустой guard определяет граничный результат; вызов deque.popleft без него вызовет IndexError. Стек же удаляет элементы справа.