martes, 4 de octubre de 2011

PILAS

                                                                Difinicion:
Las pilas son otro tipo de estructura de datos lineales, las cuales presentan restricciones en cuanto a la posición en la cual pueden realizarse las inserciones y las extracciones de elementos.
Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos sólo por uno de los extremos.
Las pilas solo tiene 2 operaciones, Push(Inserción) y Pop(Eliminación) la cual solo se puede efectuar por un extremo llamado Top. Sin Embargo se le pueden aplicar todas las operaciónes al igual que a las listas.

Operaciones:
Push:  Es simplemente el método por el cual va agregando un Dato nuevo a la Pila tomando en cuenta la 
capacidad Máxima (Max) de almacenar un dato.
Pop: Es simplemente el método por el cual va sacando el ultimo Dato de la Pila, basándose únicamente en el Top.

Recorrido Ya que las pilas son LIFO(Last in  First Out) el Recorrido se hace sacando el ultimo dato que se inserto hasta que no encuentre ningún otro. 


Detalle: Apuntador toma el Top, después ve si la condición cumple para efectuar un Ciclo mientras Apuntador sea diferente de Nulo, si cumple lo que hace es que despliega el contenido de la Pila(Pila[Apuntador]), después Apuntador se le resta 1. Este proceso se repite hasta que Apuntador sea igual Nulo(Cuando llega a este punto la Pila ya fue Recorrida).

Algoritmo:
Recorrido(Pila, Top) 

Apuntador ←- Top 
Repetir mientras Apuntador ≠ Nulo 
Imprimir Pila[Apuntador] 
Apuntador ←- Apuntador - 1 
Fin del ciclo 
Salir 

<>






Búsqueda 
Definición: 
Este método usa el recorrido para encontrar Elemento y desplegar un mensaje si la búsqueda es exitosa. 
Detalle: 
El algoritmo compara para determinar si la Pila tiene algún dato, si no simplemente desplegara Lista Vacía y saldrá. De otra manera hará un Recorrido y comparara con cada uno de los Datos de la Pila hasta encontrar el dato que desea buscar. Si lo encuentra desplegara “El Dato fue encontrado” de otra manera “El Dato no se encontró”. 

Algoritmo: 
Busqueda(Pila, Top, Elemento) 
Si Top &ne; Nulo 
Apuntador ←- Top 
Repetir mientras Apuntador &ne; Nulo 
Si Pila[Apuntador] = Elemento 
Imprimir “El Dato fue encontrado” y Salir 
Apuntador ←- Apuntador - 1 
Fin del ciclo 
Imprimir “El Dato no se encontró” 
Si no: 
Imprimir “Pila Vacía” 
Salir 

Eliminacion:
Definición:
Este método busca un Dato dentro de la pila y lo elimina.

Detalle:
El algoritmo compara para determinar si la Pila tiene algún dato, si no simplemente desplegara Pila Vacía y saldrá. De otra manera hará un Recorrido y comparara con cada uno de los Datos de la Pila hasta encontrar el dato que desea eliminar, mientras hace esto copia cada uno de los datos a un arreglo Temp para cuando encuentre el Dato regresar esos valores a la Pila. Si lo encuentra desplegara “Eliminado el Dato” y le restara 1 a Top, de otra manera “El Dato no encontrado”.

Algoritmo:
Borrar(Pila, Temp, Top, Elemento)
Si Top &ne; Nulo
Apuntador1 ←- Top
Repetir mientras Apuntador1 &ne; Nulo
Si Pila[Apuntador1] = Elemento
Imprimir “Eliminando el Dato…”
Repetir mientras Apuntador2 &ne; Nulo
Pila[Apuntador1]=Temp[Apuntador2]
Fin del ciclo
Top ←- Top - 1 y Salir
Si No:
Temp[Apuntador2] ←- Pila[Apuntador1]
Apuntador1 ←- Apuntador1 - 1
Apuntador2 ←- Apuntador2 + 1
Fin del ciclo
Imprimir “Dato no encontrado”
Si no:
Imprimir “Pila Vacía”
Salir

aplicaciones
  • Un ejemplo típico de pila lo constituye un montón de platos: Cuando se quiere introducir un nuevo plato, éste se coloca en la posición más accesible, encima del último plato. Cuando se toma un  plato, éste se extrae, igualmente, del punto más accesible, el último que se ha introducido. 
  • Si somos más estrictos, otro ejemplo sería una caja llena de libros. Sólo podemos ver cuál es el libro que está más arriba en la caja, y si ponemos o tomamos un libro, sólo podremos actuar sobre este primer libro. No podemos siquiera saber el número total de libros guardados en la pila. Sólo sabremos el número de elementos de la pila de libros si previamente los sacamos hasta vaciar la caja.
  • Otro ejemplo natural de la aplicación de la estructura pila aparece durante la ejecución de un programa de ordenador, en la forma en que la máquina procesa las llamadas a los procedimientos. Cada llamada a un procedimiento (o función) hace que el sistema almacene toda la información asociada con ese procedimiento (parámetros, variables, constantes, dirección de retorno, etc...) de forma independiente a otros procedimientos y permitiendo que unos procedimientos puedan invocar a otros distintos (o a si mismos) y que toda esa información almacenada pueda ser recuperada convenientemente cuando corresponda. Como en un procesador sólo se puede estar ejecutando un procedimiento, esto quiere decir que sólo es necesario que sean accesibles los datos de un procedimiento (el último activado, el que está en la cima).

videos relacionados

Código de pila en java

fuentes
http://www.programacionfacil.com/estructura_de_datos:pilas
http://www.lcc.uma.es/~lopez/modular/tads/pilas_colas.pdf

No hay comentarios:

Publicar un comentario