Всем привет! Это фантастическое время, чтобы начать изучать структуры данных, и одна из них — «Очередь». Вы можете спросить меня: «Почему ты до сих пор пишешь об этом в блоге, если много информации вне блога?». Да, определенно много информации об этом, но я хотел бы показать свою точку зрения, объяснение и свое решение для этого. Давайте начнем.

Структура данных? Что это?

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

Различные структуры данных:

  • Множество
  • Связанный список
  • Куча
  • Очередь
  • Бинарное дерево
  • Бинарное дерево поиска
  • куча
  • Хеширование
  • График
  • Матрица
  • Разное
  • Расширенная структура данных

Вы можете быть незнакомы с этим, но шаг за шагом мы рассмотрим их все, но сегодня я хотел бы начать с Queue.

Очередь – это линейная структура, которая следует определенному порядку выполнения операций. Порядок – «первым пришел – первым обслужен» (FIFO). Например, вы стоите в очереди на кассу и ждете, пока вас обслужит кассир. Один за другим вы продвигаетесь вперед, чтобы вас обслужили, и в конце концов, когда вы дошли до кассы, вы уже вне очереди. Вот как это работает.

Я часто работаю с JavaScript, и этот язык изначально реализует несколько структур дат. Даже у нас есть функциональность массива JS. Это одна из функций Queue.

Почему мы все еще должны его использовать, если мы уже знаем, что он работает как обычный массив и в нем нет ничего особенного?

Потому что они помогают управлять вашими данными более определенным образом, чем массивы и списки.

Очередь «первым пришел – первым вышел» (FIFO).

Стек последний пришел, первый вышел (LIFO)

Массивы и списки имеют произвольный доступ. Они очень гибкие, а также легко повреждаются. ЕСЛИ вы хотите управлять своими данными как FIFO или LIFO, лучше всего использовать уже реализованные коллекции.

Прямо сейчас давайте реализуем наши теоретические знания в реальном коде.

Очередь

Добавить элемент в очередь → array.unshift()

Удалить элемент из очереди → array.pop()

Описание:

Создайте структуру данных очереди. Очередь должна быть классом с методами «добавить» и «удалить». При добавлении в очередь элемент должен сохраняться до тех пор, пока он не будет удален.

Пример:

const q = новая очередь(); // создаем новую пустую очередь

q.add(1);// Добавляем запись в очередь

q.remove();// возвращает 1