El post anteriores dimos solucion al problema de las torres de Hanoi, de manera recursiva y no recursiva. Para la segunda opcion utilizamos estructuras de tipo pila, pero algunos lectores me regañaron que por que no saben que es una pila, asi que este dia explicare de manera bastante simple lo que es una pila y como funciona.
Definicion formal
Pila: Es una lista de elementos a la cual se le pueden insertar y retirar elementos solo por uno de los extremos. En consecuencia, los elementos de una pila seran retirados en orden inverso al que se insertaron.
Ejemplos graficos
Imaginemos que queremos untar deliciosa y cremosa cajeta en estos panes, lo mas normal es que tomemos el pan que esta hasta arriba y untemos en él la cajeta, despues tomamos el que sigue, el que sigue, y asi hasta llegar al final. Seria mas incomodo sacar panes del medio para untarlos todos, o de la parte de abajo (que weba).
Otro ejemplo es una torre de discos, para sacar el disco de hasta abajo, tienes que sacar primero todos los que estan arriba de el, y es mas lata cuando no sabes que disco es, tienes que buscar de uno por uno e irlos sacando.
¿y pa que fregados me sirve eso?
Bueno, las utilidades de esta estructura son bastantes, entre ellas esta la construccion de calculadoras, sumulacion de recursion o recorrido de arboles por niveles entre muuuchas otras cosas mas. La forma de programarlas varian segun el lenguaje, pero a continuacion explicare estas pilas en forma de arreglos de elementos.
Las pilas en la programacion
Weno, suponiendo que tenemos un arreglo en cualquier lenguaje. Dependiendo del lenguaje podremos sacar valores de dicho arreglo en desorden si asi lo deseamos de diferentes formas, la idea es crear un arreglo con ciertas restricciones, en donde solo se puedan retirar elementos de un solo lado y solo se pueda retirar el elemento que esta hasta la orilla de dicho arreglo. Para retirar elementos es muy coum utilizar el metodo pop, y para introducirlos, el metodo push. Asi, deberemos bloquear todas las modificaciones que podamos hacerle al arreglo y manipular estos movimientos con metodos creados por nosotros que solo permitan sacar el elemento que se encuentra en el tope e introducir nuevos elementos encima del tope.
Pseudocodigo de los metodos push y pop
Bueno, aca les dejo el pseudocodigo que deben utilizar para lograr agregar y quitar elementos de una pila
//este algoritmo almacena el valor dato en la pila manejando la variable tope como el puntero del ultimo elemento.
//max es el numero maximo de elementos que puede almacenar la pila
push(pila, max, tope, dato)
si tope < max //solo si deseamos manejar un limite de elementos en la pila si no, no es necesario
entonces
tope=tope + 1
pila[tope]=dato //almacena un nuevo elemento en el siguiente espacio disponible
si no
escribir «La pila esta llena»
Fin //si tope < max
Fin //del metodo
pop(pila, tope, dato)
si tope>0 //vemos si hay elementos en la pila
entonces
dato=pila[tope]
tope=tope-1
si no
escribir «Ya no hay elementos en la pila
Fin //si tope>0
Fin //del metodo
Si quieren dar solucion orientada a objetos, entonces deberan ponerle propiedades al objeto pila, en lugar de enviar los valores como parametro en los metodos. Depende del lenguaje que utilicen.
Si sigue sin servirles esto, poes…. ni modo jojojo!!!
Comenten xD
Bitacoras.com
octubre 7, 2009 at 4:42 pmInformación Bitacoras.com…
Valora en Bitacoras.com: El post anteriores dimos solucion al problema de las torres de Hanoi, de manera recursiva y no recursiva. Para la segunda opcion utilizamos estructuras de tipo pila, pero algunos lectores me regañaron que por que no saben que…..
Pila de enteros en Java | Godieboy
octubre 11, 2009 at 9:40 pm[…] una clase Pila como se explico uno posts antes para que hagan el ejercicio de las torres de hanoi sin […]
Uso de pilas en la recursión, pseudocodigo para calcular factorial | Godieboy
diciembre 8, 2009 at 12:45 am[…] Pila: Es una lista de elementos a la cual se le pueden insertar y retirar elementos solo por uno de los extremos. En consecuencia, los elementos de una pila seran retirados en orden inverso al que se insertaron. Ver detalle… […]
JUAN
marzo 13, 2011 at 10:41 pmQUE BUEN POST ESPERO ME PUEDAS AGREGAR A MI CORREO TENGO ALGUNOS PROBLEMAS CON LA PROGRAMACION ESPERO ME PUEDAS AYUDAR UN POCO GRACIAS=
jeremias
abril 16, 2011 at 10:14 amque buen post, amigo, aorita tengo q acer un pseudocodigo para java, de una pila, en donde tengo q insertar, borrar, actualizar y ver datos de una aplicacion para una empresa de aereo lineas,
espero que me ayudens garcias
jeremias
abril 16, 2011 at 11:04 amsaludos mira esto es loq tengo q acer
utilizar una lista enlazada o una cola para controlar una lista de pasajeros, de una aereolinea
el programa principal debe de ser controlado por menu y permitir al usuario visualizar los datos
de un determinado pasajero, visualizar la lista completa, crear una lista de pasajeros, insertar, borrar,y sustituir datos
de un determinado pasajero,
esto es lo que tiene que acer mi pseudocodigo y el codigo en java,
espero que me eches la mano amigo,
un saludo y gracias
andre
marzo 3, 2012 at 10:50 pmyo ocupaba la solucion con pila y cola 🙁 java
godie
marzo 4, 2012 at 10:06 pmPero ya tienes el pseudo-codigo solo lo pasas al lenguaje que necesites esta facil.
Pseudocodigo torres Hanoi Sin recursividad | Internet, programacion Aplicaciones y mas solo en Godieboy
octubre 3, 2011 at 2:51 pm[…] de tipo texto). //n es el numero de discos //pilaN, pilaO, pilaD y pilaA son estructuras de tipo PILA //tope es una variable de tipo entero. //varaux es una variable de tipo texto (en este caso por que […]
stefany
septiembre 9, 2012 at 4:47 pmMuy bien Gracias justo para mi tarea de programacion OO ! Salu2
Mjo
noviembre 6, 2022 at 12:46 pmSaludos, si me sirvió ,muchas gracias