Почему очередь с приоритетом не может обернуться как обычная очередь? - PullRequest
0 голосов
/ 24 декабря 2018

Я знаю, что для повышения эффективности, Очереди используют метод обтекания , чтобы избежать смещения всего, что происходит при удалении элемента.

Однако я не понимаю, почему Приоритетные очереди не могут обернуться как обычные очереди.На мой взгляд, приоритетные очереди более похожи на Stack , чем на Queue, как это возможно?

1 Ответ

0 голосов
/ 24 декабря 2018

Наиболее распространенной реализацией очереди приоритетов является двоичная куча , которая не выиграет от обтекания.Вы можете создать очередь с приоритетами, которая реализована в циклическом буфере, но производительность может снизиться.

Важно помнить, что очередь с приоритетами является абстрактной структурой данных.Он определяет операции, но не реализацию.Вы можете реализовать приоритетную очередь в виде двоичной кучи, отсортированного массива, несортированного массива, двоичного дерева, списка пропусков, связанного списка и т. Д. Существует множество различных способов реализации приоритетной очереди.

ДвоичныйКуча, с другой стороны, является специфической реализацией абстрактного типа данных очереди с приоритетами.

Что касается стека и очереди: в действительности, стеки и очереди являются просто специализациями очереди с приоритетами.Если вы считаете время приоритетом, то то, что мы называем очередью (структура данных FIFO), на самом деле является очередью приоритетов, в которой самый старый элемент имеет наивысший приоритет.Стек (структура данных LIFO) является очередью приоритетов, в которой самый новый элемент имеет наивысший приоритет.

...