pilas y colas
Las pilas son frecuentemente utilizadas en el desarrollo de sistemas informáticos y software en general. Por ejemplo, el sistema de soporte en tiempo de compilación y ejecución del Pascal utiliza una pila para llevar la cuenta de los parámetros de procedimientosy funciones, variables locales, globales y dinámicas. Este tipo de estructuras también son utilizadas para traducir expresiones aritméticas o cuando se quiere recordar una secuencia de acciones u objetos en el orden inverso del ocurrido.
Dada la definición teórica de una pila, podremos representar la misma en forma gráfica como se ve en la figura:
La pila recién creada se encuentra 1 TOPEvacía, el tope apunta a nil.
Se desean ingresar los elementos 5
1, 5 y 7 en ese orden.
7 nil
TOPE
El elemento '1' se ubica en (Se ve claramente como los elemento
el "fondo" de la pila, mien- 5 se ingresan por "arriba" y se van
tras que el siguiente, el '5', "apilando".)
se ubica "sobre" él. 1
nil
7 TOPE
Luego de dicha operación El tope apunta al elemento de
la pila puede representarse5 "arriba", y el enlace se realiza
como en la figura. Así de- desde él hacia el "fondo".
cimos que se encuentra 1
"llena"
nil
Podemos de esta manera observar claramente que para obtener el elemento '5' que ingresamos anteriormente, al poder acceder únicamente a la pila por el tope (la parte "superior"), debemos retirar antes los elementos que se encuentren antes o "sobre" él. De éstamanera la acción de retirar elementos de la estructura podemos graficarla de la siguiente forma:
TOPE
Así, entonces, queda la elemento
pila al retirar los elementos 5 retirado
en forma secuencial. 7
1 nil
El tope apunta al siguiente del elemento retirado. Si se quiere continuar retirando los elementos que se ingresaron con anterioridad, la pila quedará completamente vacía, y se veclaramente como los elementos se van repitiendo en el orden inverso en que se habían ingresado. Finalmente, cuando la pila se encuentre vacía, el tope apuntará a nil.
5
TOPE se retiran los elementos
1 en forma secuencial.
nil
7
elemento retirado
Ahora bien, una vez conocido el comportamiento de las pilas veremos como se definen las mismas y su forma de manejo, o "comportamiento" de la pila.Definición dinámica de una pila:
Las operaciones que definen el comportamiento de una pila o primitivas son las siguientes:
• Crear pila.
• Insertar elemento.
• Retirar elemento.
• Pila vacía.
• Vaciar pila.
La definición junto con la implementación de éste tipo de estructura, es conveniente realizarlas en una unidad de biblioteca, de este modo se mantiene el nivel de abstracción de laestructura.
Unit Pilas;
Interface
type
tipo_dato = ;
tptr_nodo_pila = ^tnodo_pila
tnodo_pila = record
dato : tipo_dato;
enlace : tptr_nodo_pila;
end;
{encabezamiento de las primitivas que utilizaremos en el tipo de dato PILA}
Procedure Pila_crear (var pila : tptr_nodo_pila);
{Pre: La pila nunca fue creada.
Post: Se creo la pila y se encuentra vacía}
Procedure Pila_insertar (var pila: tptr_nodo_pila; elem : tipo_dato; var error : boolean);
{Pre: La pila existe.
Post: Si error = false el elemento fue ingresado en el tope de la pila, si error = true no se ha ingresado el elemento, la pila se encuentra llena}
Procedure Pila_retirar (var pila : tptr_nodo_pila; var elem : tipo_dato);
{Pre:La pila fue creada y no está vacia.
Post: El elemento del tope de la pila fue...
Regístrate para leer el documento completo.