Las pilas y colas en php son una lista doblemente enlazada, en ambas direcciones. Son bastante sencillas de usar. Seguro que muchos programadores de php usan arrays que permiten "simular" una pila y una cola ya que hay funciones que permiten sacar el último y primer elemento de un array (aparte de usar el índice 0 para el primer índice y el índice del tamaño del array menos 1 para el último elemento, suponiendo que no sea un array asociativo).
Os muestro un ejemplo sencillo ed cada:
-
Pilas(SplStack): Es una pila y como tal los elementos se añaden al final y se van "sacando" por el último.
//Crea la pila $stack = new SplStack(); //Añade elementos $stack->push('1'); $stack->push('2'); $stack->push('3'); //Muestra el número de elementos de la pila (3) echo $stack->count(); //Situa el puntero al final de la cola $stack->rewind(); //Muestra los elementos (3, 2, 1) while( $stack->valid() ) { echo $stack->current(), PHP_EOL; $stack->next(); } //Saca de la pila el último elemento y lo muestra echo $stack->pop(); //Situa el puntero al final de la cola $stack->rewind(); //Muestra el número de elementos de la pila (2) echo $stack->count(); //Muestra los elementos (2, 1) while( $stack->valid() ) { echo $stack->current(), PHP_EOL; $stack->next(); }
- Colas(SplQueue ): Es una cola y como tal los elementos se añaden al final y se van "sacando" por el primero.
//Crea la cola $queue= new SplQueue(); //Añade elementos $queue->enqueue('1'); $queue->enqueue('2'); $queue->enqueue('3'); //Muestra el número de elementos de la cola(3) echo $queue->count(); //Situa el puntero al principio de la cola $queue->rewind(); //Muestra los elementos (1, 2, 3) while( $queue->valid() ) { echo $queue->current(), PHP_EOL; $queue->next(); } //Saca de la cola el primer elemento y lo muestra echo $queue->dequeue(); //Situa el puntero al principio de la cola $queue->rewind(); //Muestra el número de elementos de la cola(2) echo $queue->count(); //Muestra los elementos (2, 3) while( $queue->valid() ) { echo $queue->current(), PHP_EOL; $queue->next(); }
Como se puede ver en estos ejemplos es bastante sencillo y manejable.