Вы находитесь на странице: 1из 4

CONSIDERACIONES TEORICAS.

PILAS (1era definicin) Son unas estructuras que son ms utilizadas siempre que se quieran recuperar una serie de elementos en orden inverso a como se introdujeron.Tanto la extraccin como la insercin de un elemento en la pila se realiza por laparte superior, por lo tanto, el nico elemento al que podemos acceder es elultimo, y como el ultimo elemento que se pone en la pila es el primero que sepuede sacar, a estas estructuras dinmicas llamadas pilas se les conoce comoLIFO (Last In First Off).Las pilas se deben implementar de forma dinmica utilizando punteros, pero siel lenguaje de programacin que estamos utilizando no admite punteros,entonces tendremos que utilizar arrays, y adems una variable quenormalmente se le da el nombre de `cima' y es la que apunta al ltimoelemento de la pila. Aplicaciones de las pilas : el uso ms comn que suele darse a las pilas escuando hacemos una llamada desde un programa a otro subprograma.Se utiliza las pilas para guardar el lugar desde donde se hizo la llamada y paraalmacenar el estado de las variables en el momento en que se hace la llamada.Tambin se utilizan en todos los algoritmos recursivos para almacenar el valor de las variables y los parmetros.

Pilas-(2da definicin) Las pilas son estructuras de datos que tienes dos operaciones bsicas: o push (para insertar un elemento) pop (para extraer un elemento). Su caracterstica fundamental es que alextraer se obtiene siempre el ltimoelemento que acaba de insertarse.Por esta razn tambin se conocen como estructuras de datos LIFO (del ingls Last In First Out). Una posible implementacin mediante listas enlazadas serainsertando y extrayendo siempre por el principio de la lista. Gracias a las pilases posible el uso de la recursividad (lo veremos en detalle en el temasiguiente).La variable que llama al mismo procedimiento en el q est, habr queguardarla as como el resto de variables de la nueva llamada,

para a la vueltade la recursividad ir sacndolas, esto es posible a la implementacin de pilas.Las pilas se utilizan en muchas aplicaciones que utilizamos conFrecuencia.Por ejemplo, la gestin de ventanas en Windows (cuando cerramos unaventana siempre recuperamos la que tenamos detrs). Otro ejemplo es laevaluacin general de cualquier expresin matemtica para evitar tener quecalcular el nmero de variables temporales que hacen falta.Por ejemplo:3 + 4 * (8 2 * 5)

Operaciones con Pila Asociadas con la estructura pilaexisten una serie de operacionesnecesarias para su manipulacin.stas son: Iniciacin de la estructura: - Crear la pila (CrearPila): Laoperacin de creacin de la pilainicia la pila como vaca. Operaciones para aadir yeliminar informacin: - Aadir elementos en la cima(Apilar): pondr un nuevoelemento en la parte superior dela pila. - Eliminar elementos de la cima(Desapilar): lo que har serdevolver el elemento superior dela cima y eliminarlo de la pila. - Operaciones para comprobar tanto la informacin contenidaen la pila, como el propio estadode la cima: - Comprobar si la pila est vaca(PilaVacia): Esta operacin esnecesaria para poder decidir sies posible eliminar elementos dela pila. - Acceder al elemento situado enla cima (CimaPila): Nos indicael valor del elemento situado enla parte superior de la pila. La especificacin correcta detodas estas operaciones permitir definir adecuadamenteuna pila. Operaciones con Pila Una declaracin ms formal de las operaciones definidas sobre la estructura dedatos pila, y los axiomas que las relacionan podran ser las siguientes: estructura pila ( valor ) / * valor ser el tipo de datos que podremos guardar enla pila */ operaciones

crear_pila ( ) -> pila apilar ( pila , valor ) -> pila desapilar ( pila ) -> pila cima_pila ( pila ) -> valor pila_vacia ( pila ) -> lgico axiomas stack pila, x valor se cumple que: pila_vacia ( crear_pila ( ) ) -> cierto pila_vacia ( apilar ( stack, x ) ) -> falso desapilar ( crear_pila ( ) ) -> error desapilar ( apilar ( stack, x ) ) -> stack cima_pila ( crear_pila ( ) ) -> error cima_pila ( apilar ( stack, x ) ) -> x Implementacin mediante estructuras estticas La forma ms simple, y habitual, de representar una pila es mediante unvector unidimensional. Este tipo de datos permite definir una secuenciade elementos (de cualquier tipo) y posee un eficiente mecanismo deacceso a la informacin contenida en ella. Al definir un array hay que determinar el nmero de ndices vlidos y,por lo tanto, el nmero de componentes definidos. Entonces, laestructura pila representada por un array tendr limitado el nmero deposibles elementos. La parte privada de la clase, ser pues un vector donde guardaremos lainformacin. El primer elemento de la pila se almacenar en info[0], serel fondo de la pila, el segundo elemento en info[1] y as sucesivamente.En general, el elemento i-simo estar almacenado en info[i - 1]. Como todas las operaciones se realizan sobre la cima de la pila, esnecesario tener correctamente localizada en todo instante esta posicin.Es necesaria una variable adicional, cima, que apunte al ltimo elementode la pila o nos diga cuantos elementos tenemos en ella. Implementacin mediante estructuras estticas (Crear-Pila) Resumiendo, la clase Pila contendr, en esta implementacin, la Siguiente parte privada:

class Pila { public: ... private: Vector vect; int cima; }; Donde Vector ser:typedef Valor Vector[MAX];Suponiendo Valor, el tipo de dato que se puede almacenar en la pila, y MAXuna constante que me limita el tamao mximo de la pila.

Вам также может понравиться