КурсыИИМатематикаКодФизикаО проекте и вопросы

TwiddleLab / Код / Структуры данных, которые видно

Очереди: первым пришёл, первым вышел

Урок 2 из 10 · 7 мин · Бесплатно, без аккаунта

Что ты узнаешь

  • Очередь это линия: элементы встают в конец и уходят из начала.
  • Первым пришёл, первым вышел (FIFO): порядок выхода совпадает с порядком входа.
  • В Python: q.append(x) встаёт в конец, q.pop(0) берёт начало.
  • Стек или очередь это один и тот же список, обслуживаемый с разных концов. Этот один выбор решает, кто ждёт.

Начать урок

Как идёт урок

  1. Миллион фанатов в одну секунду жмут «Купить». Кто получит билет первым?

    Вот маленькая очередь за билетами. Жми «Дальше» и смотри, кого обслуживают.

  2. Сделай честно. Передвинь окошко кассы.

    Те же фанаты, тот же порядок событий. Двигается только окошко.

    Когда окошко в конце, рядом с ним всегда самый новый фанат. В начале следующим идёт тот, кто ждёт дольше всех.

  3. Стек или очередь?

    Каждая коробка принимает элементы и выдаёт часть. Прочитай порядок выхода и назови коробку.

  4. Честная очередь это очередь.

    Очередь это линия: элементы встают в конец и уходят из начала.

    Первым пришёл, первым вышел: FIFO. Стек это LIFO. Та же стопка элементов, обслуживаемая с другого конца.

    В Python: q.append(x) встаёт в конец. q.pop(0) берёт элемент с индексом 0, начало.

  5. Стек или очередь? Разложи по тому, как они работают.

    Спроси: первым идёт самое новое или самое старое?

  6. Очередь в Python.

    Пройди по шагам. Перед каждым pop(0) нажми на того, кто уйдёт.

  7. Ходите по очереди: Ana, Ben, Cy, Ana, Ben.

    Собери цикл ходов. Игрок, чей ход закончился, идёт в конец очереди.

  8. Чат-боты тоже ставят сообщения в очередь.

    Загруженный сервер чат-бота отвечает на один запрос каждые 2 секунды, сначала старые. Ты номер 7 в его очереди.

    Очередь обслуживает в порядке прихода. Перед тобой шесть запросов, поэтому твой ответ 7-й: 7 x 2 = 14 с.

  9. Твой цикл ходов, с четырьмя игроками и одним изменением.

    Одна версия использует твой pop(0), другая pop(). Нажми на честную, потом «Проверить».

    append ставит игрока в конец. pop() снова берёт с конца, поэтому тот же игрок сразу выходит. pop(0) берёт из начала, поэтому игрок ждёт за всеми остальными.

Предыдущий урок: Стек: последним пришёл, первым ушёл · Следующий урок: Связные списки: цепочки стрелок · Часть курса: Структуры данных, которые видно

Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.

Loading TwiddleLab