Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
serglif 03.03.2005 13:59 / 03.03.2005 14:02
Вот понадобилось и набацал побыстрому. Может кому пригодится. Критика кода очень приветствуется.#========================================================================================== # Класс для работы типом данных "Очередь". (v1.0) Автор: С. Лифшиц (serlif@mail.ru) #========================================================================================== # # @create[data] - конструктор # @push[data] - добавить в очередь # @pop[] - взять из очереди # @empty[] - проверка на пустоту # #========================================================================================== @CLASS dec @create[data][key] ^if(def $data){ $key[^math:uid64[]] $dec[ $.quantity(1) $.keys[$key] $.$key[$data]} ] }{ $.dec[$.quantity(0)] } @push[data][key;flag] ^if(def $data){ ^while(!$flag){ $key[^math:uid64[]] ^if(!def $dec.$key){$flag(1)} } $dec.keys[${dec.keys}$key] $dec.quantity($dec.quantity+1) $dec[$.[$key][$data]] } @pop[][key] ^if($dec.quantity>0){ $key[^dec.keys.left(16)] $result[$dec.$key] $dec.quantity($dec.quantity-1) $dec.keys[^dec.keys.right(16*$dec.quantity)] } @empty[] $result(^if($dec.quantity==0){1}{0})