Pilas en PHP
Por bote
Las pilas son estructuras de datos muy prácticas y que nos sirven para infinidad de aplicaciones. Dentro del desarrollo web no me ha tocado verles tanta utilidad como en aplicaciones de escritorio sin embargo las hay y en este microtutorial veremos como implementarlas en PHP.
Lo primero que hay que saber es que una pila -tanto en PHP como en Java y cualquier lenguaje- no es más que un arreglo de elementos que funciona mediante la filosofía LIFO. Entonces para usar una pila en PHP primero hay que tener un arreglo creado.
Podemos crearlo e inicializarlo o simplemente crearlo con la funcion array de esta manera.
$arreglo1 = array(); $arreglo2 = array( $dato1 , $dato 2 , $dato3 );
Bien, ya que tenemos un array las funciones que PHP nos da para manipular la pila son array_push() y array_pop() que sirven para insertar un elemento y retirar un elemento del arreglo respectivamente. Un ejemplo típico de uso de una pila es verificar si una palabra dada es palíndromo. Palíndromo es aquella palabra que leída de derecha a izquierda es igual que de izquierda a derecha.
Para hacer esto necesitamos tomar la palabra que queremos verificar. Luego hay que meter cada caracter a un arreglo y posteriormente sacar cada caracter en orden inverso a como se metieron y concatenarlo a otra cadena. Una vez vaciado el arreglo comparamos la palabra original y la cadena que creamos al vaciar el arreglo, si son iguales, la palabra es un palíndromo.
Esta sería la función PHP que comprueba si una palabra es palíndromo o no.
function es_palindromo( $word ) {
$cadena = "";
$pila = array();
for ( $i = 0; $i< count( $word ); $i++ ) {
array_push( $pila , substr($word,$i,$i+1) );
}
while ( count( $pila ) > 0 ) {
$cadena .= array_pop( $pila );
}
return ( $word == $cadena );
}
Como se ve, array_push( $pila , $dato ) unicamente inserta en el arreglo o pila especificado el elemento dado, y es de tipo entero ya que regresa el número de elementos que contiene la pila (aunque en este caso no es necesario saberlo). array_pop( $pila ) extrae de la pila que se especifica el último elemento y lo regresa. Nótese que en el ciclo while la condición es que mientras el tamaño de la pila sea mayor a cero. Esto bien podría ser así: while (count($pila)) y ya, la diferencia es que esto consume más tiempo de ejecución ya que es más lento verificar que un elemento exista a hacer una comparación.
Ok, aqui termino, el código no lo chequé, creo que debe funcionar porque no le veo ningún error de parsing, pero equivocarse en algún código es lo más común de nosotros los programadores ademas Boltzmann lo tiene más que comprobado. Si hay errores o dudas sobre cómo implementarlo, dejen comentarios.
Technorati tags: array-pop, array-push, arreglos, php, pilas, programacion
Entradas posiblemente relacionadas:
- Teclado para programadores (2)
- Clase para manejar base de datos MySQL en PHP (16)
- Método de Gauss en PHP (7)
- Cómo modificar documentos XML con PHP (21)
- Cómo acceder a los datos de XML en PHP (9)
Este artículo fue escrito el 25 de Mayo de 2007 y se encuentra en la(s) categoría(s) de Microtutoriales, PHP, Programacion. Puedes seguir las respuestas a esta entrada a traves del Feed RSS. También puedes dejar un comentario, o hacer un trackback desde tu propio blog.


eric:
Abril 23rd, 2008