Blog de Gonzalo

PILAS Y COLAS EN PHP

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.

Compartir en twitter