Очередь (Queue) - это упорядоченный список, где элементы добавляются
в один конец списка, а удаляются с другого конца. Группа людей у кассы ма-
газина образует очередь. Вновь прибывшие люди становятся в конец очереди.
Когда клиент доходит до начала очереди, кассир обслуживает его. Поэтому очере-
ди иногда называют списками типа первый вошел - первый вышел (First-In-First-
Out list - FIFO).
Вы можете реализовать очереди в Delphi, используя методы, аналогичные ме-
тодам реализации простых стеков. Выделите память для массива и сохраните счет-
чики, указывающие на начало и конец очереди. Переменная QueueFront указы-
вает индекс элемента в начале очереди. Переменная QueueBack определяет, куда
должен быть добавлен следующий элемент очереди. Размер массива нужно менять
только тогда, когда новые элементы приходят в самый конец очереди.
Как и в случае со списками, можно повысить производительность программы,
добавляя сразу несколько элементов при каждом увеличении массива. Второй спо-
соб сэкономить время - сокращать размер массива только тогда, когда он содер-
жит слишком много неиспользуемых записей.
В случае простого списка или стека элементы добавляются и удаляются на
одном конце массива. Если размер списка остается постоянным, то его не придет-
ся изменять слишком часто. С другой стороны, когда вы добавляете элементы в один
конец очереди, а удаляете их с другого, может потребоваться время от времени
перестраивать очередь, даже если ее размер остается постоянным.
Программа ArrayQ использует этот метод для создания простой очереди. Введи-
те строку и щелкните по кнопке Enter (Ввод), чтобы добавить новый элемент к кон-
цу очереди. Кнопка Leave (Покинуть) предназначена для удаления верхнего элемен-
та из очереди.
Работая с программой, обратите внимание, что размер очереди каждый раз
изменяется при добавлении и удалении элементов, даже если ее границы остают-
ся почти такими же, как и были. Фактически даже при многократном добавлении
и удалении одного элемента размер очереди будет изменяться.
Опубликовал Kest
October 17 2009 20:38:37 ·
0 Комментариев ·
14132 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.