Изменения

Перейти к: навигация, поиск

Очередь

148 байт добавлено, 08:32, 26 апреля 2011
Нет описания правки
== Определение ==
'''О́чередь''' — структура данных с дисциплиной доступа к элементам FIFO («первый пришёл — первый вышел» (FIFO, First In — First Out). Добавление элемента возможно лишь в конец очереди, выборка — только из начала очереди, при этом выбранный элемент из очереди удаляется.
=== Массив ===
Первый способ представляет очередь в виде массива q m[] размером n и двух целочисленных переменных (указателей) start и end.<br />
Обычно start указывает на голову очереди, q[end] — end — на элемент, который заполнится, когда в очередь войдёт новый элемент. При добавлении элемента в очередь в qm[end] записывается новый элемент очереди, а end уменьшается увеличивается на единицу. Если значение end становится меньше 1равным n, то мы как бы циклически обходим массив и значение переменной становится равным n1. Извлечение элемента из очереди производится аналогично: после извлечения элемента qm[start] из очереди переменная start уменьшается увеличивается на 1, т.е как с переменной end. С такими алгоритмами одна ячейка из n всегда будет незанятой (так как очередь с n элементами невозможно отличить от пустой), что компенсируется простотой алгоритмов.
Преимущества данного метода: возможна незначительная экономия памяти по сравнению со вторым способом; проще в разработке.
Очередь в программировании используется, как и в реальной жизни, когда нужно совершить какие-то действия в порядке их поступления, выполнив их последовательно. Примером может служить организация событий в Windows. Когда пользователь оказывает какое-то действие на приложение, то в приложении не вызывается соответствующая процедура (ведь в этот момент приложение может совершать другие действия), а ему присылается сообщение, содержащее информацию о совершенном действии, это сообщение ставится в очередь, и только когда будут обработаны сообщения, пришедшие ранее, приложение выполнит необходимое действие.
Клавиатурный буфер BIOS организован в виде кольцевого массива, обычно длиной в 16 машинных слов, и двух указателей: на следующий элемент в нём и на первый незанятый элемент.(реализация очереди на массиве)
== См. также ==
147
правок

Навигация