Всем привет! Это фантастическое время, чтобы начать изучать структуры данных, и одна из них — «Очередь». Вы можете спросить меня: «Почему ты до сих пор пишешь об этом в блоге, если много информации вне блога?». Да, определенно много информации об этом, но я хотел бы показать свою точку зрения, объяснение и свое решение для этого. Давайте начнем.
Структура данных? Что это?
По сути, это способы организации информации с оптимальной «сложностью выполнения» для добавления или удаления записей. Например, мы можем сохранить список элементов, имеющих одинаковый тип данных, используя структуру данных array.
Различные структуры данных:
- Множество
- Связанный список
- Куча
- Очередь
- Бинарное дерево
- Бинарное дерево поиска
- куча
- Хеширование
- График
- Матрица
- Разное
- Расширенная структура данных
Вы можете быть незнакомы с этим, но шаг за шагом мы рассмотрим их все, но сегодня я хотел бы начать с Queue.
Очередь – это линейная структура, которая следует определенному порядку выполнения операций. Порядок – «первым пришел – первым обслужен» (FIFO). Например, вы стоите в очереди на кассу и ждете, пока вас обслужит кассир. Один за другим вы продвигаетесь вперед, чтобы вас обслужили, и в конце концов, когда вы дошли до кассы, вы уже вне очереди. Вот как это работает.
Я часто работаю с JavaScript, и этот язык изначально реализует несколько структур дат. Даже у нас есть функциональность массива JS. Это одна из функций Queue.
Почему мы все еще должны его использовать, если мы уже знаем, что он работает как обычный массив и в нем нет ничего особенного?
Потому что они помогают управлять вашими данными более определенным образом, чем массивы и списки.
Очередь «первым пришел – первым вышел» (FIFO).
Стек последний пришел, первый вышел (LIFO)
Массивы и списки имеют произвольный доступ. Они очень гибкие, а также легко повреждаются. ЕСЛИ вы хотите управлять своими данными как FIFO или LIFO, лучше всего использовать уже реализованные коллекции.
Прямо сейчас давайте реализуем наши теоретические знания в реальном коде.
Очередь
Добавить элемент в очередь → array.unshift()
Удалить элемент из очереди → array.pop()
Описание:
Создайте структуру данных очереди. Очередь должна быть классом с методами «добавить» и «удалить». При добавлении в очередь элемент должен сохраняться до тех пор, пока он не будет удален.
Пример:
const q = новая очередь(); // создаем новую пустую очередь
q.add(1);// Добавляем запись в очередь
q.remove();// возвращает 1