- Definición y ejemplos. Representación de pilas en C. , que es llamado el tope de la pila
A diferencia del arreglo, la definición de la pila considera la inserción y eliminaciòn de elementos, por lo que una pila es un objeto dinámico en constante cambio. ¿Cómo cambia una pila? La definición especifica que un solo extremo de la pila se designa como el tope. Pueden colocarse nuevos elementos en el tope de la pila (en este caso el tope de la pila sube para corresponder al nuevo elemento más alto), o se pueden quitar elementos (en este caso el tope de la pila baja para corresponder al nuevo elemento más alto). Para contestar la pregunta cual lado es arriba? debemos decidir cuál extremo de la pila se designa como el tope, es decir, en cuál extremo se agregan o suprimen elementos.
Esto también se indica mediante las líneas verticales que se extienden más allá de los elementos de la pila, en dirección al tope.
De acuerdo con la definición, sólo hay un lugar en la pila donde puede colocarse: en el tope. Ahora, el elemento superior de la pila es G. Conforme la película avanza por los cuadros c, d, y e, se agregan sucesivamente a la pila los elementos H, I y J Observe que el último elemento agregado (en este caso J), está en el tope de la pila. Sin embargo, empezando con el cuadro f, la pila empieza a reducirse, al principio se retira J y después, de manera sucesiva, se eliminan I, H, G y F. En cada punto se quita el elemento superior de la pila, porque sólo puede hacerse una supresión del tope. El elemento G no podría retirarse de la pila antes que los elementos J, I y H. Esto ilustra la característica más importante de una pila, que el último elemento insertado en ella es el primero en suprimiese. Por tanto, J se retira antes que I, porque J se insertó después. Por esta razón, en ocasiones una pila se denomina una lista "último en entrar, primero en salir" (o LIFO, por sus siglas en inglés).
Entre los cuadros j y k la pila ha dejado de reducirse y empieza a crecer otra vez conforme se añade el elemento K. Sin embargo, esta expansión es de corta duración y la pila se reduce a sólo, tres elementos en el cuadro n.
Observe que no se pueden diferenciar los cuadros a e i al observar el estado de la pila en los dos casos. En ambos casos la pila contiene elementos idénticos en el mismo orden y tienen el misma tope. En la pila no se conserva un registro de que, entre esos dos periodos, se han agregado y, removido cuatro elementos. De igual modo, no es posible diferenciar los cuadros d y f, oj y l. Si se,, necesita un registro de los elementos intermedios que han estado en la pila, debe con otra parte; no existe dentro de la pila misma.
De hecho, hemos tenido una imagen exagerada de lo que realmente ocurre en ti verdadera imagen de una pila la proporciona una vista desde el tope ¡lacia abajo, y no de hacia adentro. Por tanto, no hay una diferencia notable entre los cuadros h y En cada caso el elemento en el tope es G. Si bien la pila en el cuadro 11 y la pila en el cuadro o iguales, la 4nica forma de determinar esto es quitar todos los elementos de ambas pila,. compararlos individualmente. Aunque hemos hecho cortes en las pilas para comprenderlas e mayor claridad, debe señalarse que sólo se hizo con fines didácticos .
REPRESENTACION DE PILAS EN C
Antes de programar una solución de un problema que emplee una pila, debemos decidir cómo representar una pila usando las estructuras de datos que existen en nuestro lenguaje de programación. Como veremos, hay varias formas de representar una pila en C. Por el momento, consideraremos la más simple de ellas. En todo el texto, presentaremos otras representaciones posibles. Sin embargo, cada una de ellas es sólo una implementación del concepto introducido en la sección 2. l.
una tiene ventajas y desventajas, en términos de la fidelidad con la que refleja el concepto de una pila y el esfuerzo que deben aportar el programador y la computadora para usarla.
Una pila es un conjunto ordenado de elementos y C ya contiene un tipo de datos que es un conjunto ordenado de ellos: el arreglo. Por tanto, cuando una solución de un problema requiere que se uw una pila, es adecuado empezar un programa declarando una variable stock como un arreglo. Sin embargo, una pila y un arreglo son dos cosas completamente distintas. La cantidad de elementos en un arreglo es fija y se asigna mediante la declaración para el arreglo. En general, el usuario no puede, cambiar esta cifra. Por otra parte, una pila es fundamentalmente un objeto dinámico cuyo tamaño se modifica en forma continua, conforme se agregan y remueven elementos.
No obstante, aunque un arreglo no puede ser una pila, puede alojar una. Es decir, puede declararse un arreglo suficientemente grande para el máximo tamaño de la pila. Durante el curso de la ejecución del programa, La pila puede crecer y reducirse dentro del espacio reservado para ella. Un extremo del arreglo es la parte inferior fija de la pila, mientras que el tope de ella cambia constantemente conforme se agregan y remueven elementos. Por tanto, se requiere otro campo que, en cada punto de la ejecución del programa, registre la posición actual del tope de la pila.
Por esta razón, una pila en C se declara como una estructura que contiene dos objetos: un arreglo para contener los elementos de la pila y un entero para indicar la posición del tope de la pila actual dentro del arreglo. Esto se hace para una pila de enteros mediante las declaraciones... ...