Изменения

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

Очередь

326 байт добавлено, 16:33, 6 июня 2012
Реализация на двух стеках
== Реализация на двух стеках ==
Очередь можно реализовать на двух [[Стек|стеках]] <tex>leftStack</tex> и <tex>rightStack</tex>. Один из стеков <tex>(leftStack)</tex> будем использовать для операции <tex>push</tex>, другой для операции <tex>pop</tex>.
 
<tex>pushLeft</tex> и <tex>pushRight</tex> - функции, реализующие операцию <tex>push</tex> для соответствующего стека; <tex>popStack</tex> - операция <tex>pop</tex> для <tex>rightStack</tex>.
=== push ===
push(x)
leftStack.pushpushLeft(x)
=== pop ===
popif !rigthStack.empty() return rightStack.popStack() else if rightStack!leftStack.empty() then while !leftStack.empty() do rightStack.push rightPush(leftStack.pop[leftSize]) leftSize-- return rightStack.poppopStack() 
Каждая операция выполняется за амортизированную <tex>O(1)</tex>.
Анонимный участник

Навигация