Как организовать очередь?

  • Автор темы Автор темы DmitriyF
  • Дата начала Дата начала

DmitriyF

Guest
Как организовать очередь?

Как в пхп можно организовать структуру данных очередь (набор элементов с двумя полями - значением и указателем на предыдущий элемент)?
 
Мне надо иметь возможность быстро выкидывать элемент из середины. Если сделать на массиве, то после выкидывания придется сдвигать остаток за время порядка n. Как работает array_slice, не очень понятно, но довольно медленно.
Боюсь что и реализация на классах будет тормозить. А вот экстеншн счас посмотрю. Он только для PHP5 или на 4 тоже будет работать?
 
мне всегда казалось, что структура данных очередь подразумевает последовательный доступ. Но я могу ошибаться.

но если так хочется выкидывать, то зачем тогда array_slice? Не проще сделать unset?
 
Originally posted by Макс
может сначало тесты проведешь ?
Да, попробую

-~{}~ 27.01.05 17:27:

Originally posted by Фанат
Ну... Такое вот у меня определение очереди :) Односвязный список это вроде называется....
А про массив - имеется в виду делать так:

PHP:
$a = array();
$a[] = 5;
$a[] = 3;
unset($a[0]);
? Остается Array ( [1] => 3 ).
Тогда я не понимаю, как мне идти с конца этого списка в начало. :(
 
агрх
читаем внимательно мануал по массивам

болтовня про скорость без тестов не принимается
 
DmitriyF
тебе правильно сказали: массив.
только данные туда клади всегда через [m]array_push[/m](), а доставай через [m]array_shift[/m]().
тогда можешь "убивать" любой элемент массива, никак не влияя на обычную работу с ним.
 
Originally posted by su1d
DmitriyF
тебе правильно сказали: массив.
только данные туда клади всегда через [m]array_push[/m](), а доставай через [m]array_shift[/m]().
тогда можешь "убивать" любой элемент массива, никак не влияя на обычную работу с ним.
Туплю - как убить элемент посередине?
 
мне всегда казалось, что структура данных очередь подразумевает последовательный доступ. Но я могу ошибаться.
кстати да.
Очереди действуют по принципу FIFO и если ты выкидываешь элементы из середины, то это уже не очередь.
 
Сверху