Evilnapsis

Programming, Hacking and More

PHP Stuffs

Pilas en PHP y POO

Una pila o stack es una estructura de datos que cumple con la regla FIFO(First In – First Out/ Primero en entrar – Primero en Salir), en este articulo construiremos la estructura pila desde PHP con Programación Orientada a Objetos.

Funcionamiento de la Pila

La pila tiene 2 funciones básica, push y pop.

La función PUSH debe agregar un nuevo elemento a la CIMA de la pila.

La función POP debe sacar de la pila el elemento que este en la CIMA.

Ejemplo

Pila

1 > 2 > 3 > 4 > 5

En este ejemplo el numero 5 esta en la cima, por lo tanto si hacemos PUSH(6), ahora el numero 6 estará en la CIMA.

1 > 2 > 3 > 4 > 5 > 6

Si en este momento hacemos POP el numero que saldrá de la PILA es el 6, si hacemos POP de nuevo saldrá el 5, y si hacemos 2 veces mas POP, saldrán el 4 y 3 el 3 lo que dejara el numero 2 en la pila.

En todo momento debemos saber cual es el valor de la cima, ya que sera el próximo valor que sacaremos.

Pila vacía

Si el valor de la CIMA es igual a CERO significa que la pila esta vacía, la función POP no devolverá ningún valor.

Pila llena

Al crear la pila se debe definir el tamaño de la pila, una vez que la pila halla alcanzado el máximo numero de elementos, no debe permitir agregar mas, la función PUSH es la encargada de manejar este ERROR.

La clase pila

[code language=”php”] class Pila {

public $size;
public $elements;
public $top;

public function Pila($size=10){
$this->size=$size;
$this->top=0;
$this->elements=array();
}
}
[/code]

Los elementos esenciales son:

  • size: el tamaño de la pila
  • elements: los elementos de la pila
  • top: el valor de la cima de la pila

En la función constructora de la clase Pila definimos el tamaño de size a 10 por defecto, en caso de no especificarse, TOP=0, la pila inicialmente vacía.

Función POP

[code language=”php”] function pop(){
$element=null;
if($this->top>0){ $element=$this->elements[$this->top]; $this->top–; }
else { echo "PILA VACIA";
return $element;
}
[/code]

En la función POP definimos $element, variable temporal en la que almacenaremos el valor que extraeremos de la pila, verificamos que TOP sea mayor que cero, es decir que la pila no este vacía, hacemos $element igual al elemento que este actualmente en la CIMA o TOP, y después disminuimos TOP, en caso de que TOP sea cero, se muestra el mensaje PILA VACÍA.

Funcion PUSH

La función PUSH toma como parámetro un elemento, el elemento que insertaremos en la PILA.

[code language=”php”] function push($element){
if($this->top<$this->size){
$this->top++;
$this->elements[$this->top]=$element;
}else {
echo "PILA LLENA";
}
}
[/code]

En la función PUSH pasamos como parametro $element, verificamos que la pila no halla alcanzado su capacidad maxima, incrementamos TOP, insertamos elemento en el valor de TOP, en caso de que la pial halla alcanzado su capacidad maxima, es decir TOP igual a SIZE, se muestra el mensaje PILA LLENA

Código Completo

[code language=”php”] class Pila {

public $size;
public $elements;
public $top;

public function Pila($size=10){
$this->size=$size;
$this->top=0;
$this->elements=array();
}

function pop(){
$element=null;
if($this->top>0){
$element=$this->elements[$this>top];
$this->top–; 
}
else { echo "PILA VACIA";  }
return $element;
}

function push($element){
if($this->top<$this->size){
$this->top++;
$this->elements[$this->top]=$element;
}else {
echo "PILA LLENA";
}
}
}
[/code]

Modo de Uso

[code language=”php”] $pila = new Pila(5);
$pila->push(1);
$pila->push(2);
$pila->push(3);
$pila->push(4);
$pila->push(5);
$pila->push(6);
echo $pila->pop();
echo $pila->pop();
echo $pila->pop();
echo $pila->pop();
echo $pila->pop();
echo $pila->pop();
[/code]

Conclusión

Manejar Pilas en PHP es relativamente fácil con esta clase, ahora el algoritmo se puede extrapolar fácilmente para cualquier otro lenguaje de programación, en el futuro veremos aplicaciones de la pila

 

 

Agustin Ramos

Desarrollador de Software

Leave a Reply