13
правок
Изменения
Очередь
,Поправка грамматики.
== Способы реализации Реализация циклической очереди на массиве ==Очередь, способную вместить не более <tex>\mathtt{n}</tex> элементов, можно реализовать с помощью массива <tex>\mathtt{elements[0\dots n-1]}</tex>. Она будет обладать следующими полями:* <tex>\mathtt{head}</tex> {{---}} голова очереди,* <tex>\mathtt{tail}</tex> {{---}} хвост очереди.
=== Массив push === '''function''' push(x : '''T'''): '''if''' (size() != n) elements[tail] = x tail = (tail + 1) % n
=== Связный список =Реализация на списке ==Второй способ основан на работе с динамической памятью. Очередь представляется в качестве Для данной реализации очереди необходимо создать [[линейный Список | список|линейного списка]], в котором добавление<tex>list</удаление элементов идет строго с соответствующих его концовtex> и операции работы на созданном списке.
=== Реализация на двух стеках pop ===Очередь может быть построена из двух [[стек]]ов <code>S1</code> и <code>S2</code> как показано ниже '''T''' pop(): size-- element = head head = head.next '''return''' element
== Очереди в различных языках программирования Реализация на двух стеках ==Практически во всех развитых языках программирования реализованы очереди. В Очередь можно реализовать на двух [[Common Language InfrastructureСтек|CLIстеках]] <tex>\mathtt{leftStack}</tex> и <tex>\mathtt{rightStack}</tex>. Поступим следующим образом: <tex>\mathtt{leftStack}</tex> будем использовать для этого предусмотрен класс Systemоперации <tex> \mathtt {push} </tex>, <tex>\mathtt{rightStack}</tex> для операции <tex> \mathtt{pop} </tex>.Collections.Queue с методами Enqueue и Dequeue. В [[Стандартная библиотека шаблонов|STL]] также присутствует класс queueПри этом, если при попытке извлечения элемента из <tex>\mathtt{rightStack}</tex>он оказался пустым, определённый просто перенесем все элементы из <tex>\mathtt{leftStack}</tex> в заголовочном файле queue. В нём используется та же терминология него (push и pop)при этом элементы в <tex>\mathtt{rightStack}</tex> получатся уже в обратном порядке, что нам и в [[стек]]ахнужно для извлечения элементов, а <tex>\mathtt{leftStack}</tex> станет пустым).
== См. также ==
* [[Стек]]
* [[ДэкПерсистентная очередь]] == Источники информации ==* [[wikipedia:ru:Очередь_(программирование)|Википедия {{---}} Очередь с приоритетом(программирование)]]* Т. Кормен. «Алгоритмы. Построение и анализ» второе издание, Глава 10.1, стр. 262* T. H. Cormen. «Introduction to Algorithms» third edition, Chapter 10.1, p. 262* [[Именованный канал]http://hdl.handle.net/1813/6273 ''Hood R., Melville R.'' Real Time Queue Operations in Pure LISP. {{---}} Cornell University, 1980]