Реализация массива очереди сложнее в управлении, чем реализация массива стека, True / False - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь понять, что было бы легче реализовать.Я понимаю, что очередь - это FIFO, а стек - это LIFO.Таким образом, если я добавлю элементы в массив, будет проще напечатать FIFO, а не LIFO ... или я поступлю неправильно.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

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

Очередь также потребует примерно на 30% больше кода.

Таким образом, мы можем сказать, что управление очередью сложнее.

0 голосов
/ 27 февраля 2019

Сложнее в управлении?Да, но не медленнее.Буферизованные очереди реализованы в виде циклических буферов (см. Java-массив ArrayDeque), что увеличивает сложность, но вставка и удаление даже для deque требует O (1).

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...