Приветствую всех,
После окончания школы Flatiron я изучал алгоритмы и структуры данных. Мне это показалось очень интересным, и они являются важной частью вашего технического интервью. Итак, на этот раз я вернулся с другим блогом о структурах данных и на этот раз о его стеках и очередях. Стеки и очереди очень похожи, обычно они рассматриваются вместе в главе. Они очень простые и имеют много общего.
Куча
Стек - это линейная структура данных, в которой есть один элемент, другой элемент и так далее. Вы можете добавлять или удалять элемент по ходу. Стек следует за LIFO (последний вошел - первым ушел), последний элемент, добавленный в стек, будет первым элементом, удаленным из стека. Возможно, вы слышали о стеках в стеке вызовов рекурсии, это очень похоже на это. Например, представьте себе стопку тарелок. Недавно добавленная пластина находится сверху и будет первой, когда вы ее удалите. Пример программирования из реальной жизни, вы можете подумать о функциях Undo или Redo в документе Microsoft Word. Стеки могут быть реализованы разными способами, два из которых - это массивы и связанные списки.
Большое количество стопок:
- Вставка - O (1)
- Удаление - O (1)
- Поиск - O (N)
- Доступ - O (N)
Очередь
Queue похож на Stack, основное отличие состоит в том, как элементы удаляются из Stacks. Очередь следует за FIFO (первым пришел - первым ушел), первый элемент, добавленный в стек, будет первым элементом, удаленным из стека. Например, вы можете представить очередь кассы в продуктовом магазине: первый человек, который встанет в очередь, будет обслужен первым. Так же и в Queue, первый добавленный элемент будет первым выведенным элементом. Пример программирования из реальной жизни, представьте, когда вы распечатываете 5 разных документов. Принтер может обрабатывать (печатать) только одну вещь за раз, оставшиеся будут помещены в очередь. Как и стеки, вы можете реализовать разными способами.
Большое количество очередей:
- Вставка - O (1)
- Удаление - O (1)
- Поиск - O (N)
- Доступ - O (N)
В заключение, в самых общих чертах, стек - это набор объектов, доступ к которым осуществляется в режиме LIFO (последний вошел - первым ушел). С другой стороны, очередь - это набор объектов, доступ к которым осуществляется по шаблону FIFO (First In First Out).
Удачного кодирования :) и счастливых праздников
Ресурсы:
https://www.thecrazyprogrammer.com/2019/01/types-of-queues-in-data-structure.html