El documento describe el concepto de pila y sus aplicaciones. Explica que una pila es una estructura de datos lineal en la que solo se permiten inserciones y eliminaciones en un extremo. Luego detalla las operaciones básicas de una pila como apilar, desapilar, cima y cómo implementar una pila utilizando un arreglo. Finalmente, propone algunos ejercicios prácticos sobre el uso de pilas.
Pilas: Concepto, implementación y operaciones básicas
1. REPÚBLICA BOLIVARIANA DE VENEZUELA
MINISTERIO DE EDUCACIÓN SUPERIOR
UNIVERSIDAD BOLIVARIANA DE VENEZUELA
SEDE: FALCÓN
PFG: INFORMÁTICA PARA LA GESTIÓN SOCIAL
U.C: PROG. Y ESTRUCTURA DE DATOS.
PROFESORA: LIC. BEATRIZ BARRIOS
Pilas
Punto Fijo, junio de 2006
2. Concepto de Pila
Es un tipo especial de lista lineal en la que la
inserción y borrado de elementos se realiza sólo por un
extremo que se denomina cima o tope.
Es una estructura con numerosas analogías en
la vida real: una pila de platos, una pila de libros, una
pila de monedas, entre otras.
3. Ejemplo 1:
Agregar un nuevo Eliminar un
elemento elemento
a
vel ia Novela Cima
No ed
op
c i cl
En ar i
o
ion Enciclopedia
cc
Di
Diccionario
Fondo
4.
Aplicaciones
5+2 – (3+4)
Los editores de texto proporcionan normalmente un
botón deshacer que cancela las operaciones de
edición recientes y restablece el estado anterior del
documento. La secuencia de operaciones recientes
se mantiene en una Pila.
Los navegadores permiten habitualmente volver
hacia atrás en la secuencia de páginas visitadas.
Las direcciones de los sitios visitados se almacenan
en una Pila.
5. Operaciones Básicas de Manipulación
Apilar: Añade un nuevo elemento a la pila, el cual se ubicará en la cima de
pila.
Desapilar: Elimina un elemento situado en la cima de la Pila. Luego de
desapilar existirá una nueva cima.
Inicializar Pila: Inicia la pila como vacía.
Pila Vacía: Comprobar si la pila no tiene elementos.
Pila Llena: Comprobar si la pila está llena de elementos. Si se encuentra
llena no se pueden apilar nuevos elementos.
Cima: Obtiene el elemento cima de la pila.
APILAR APILAR APILAR DESAPILAR APILAR
CIMA E3 CIMA E4
Pila Vacía CIMA E2 E2 CIMA E2 E2
CIMA E1 E1 E1 E1 E1
6. El tipo Pila implementado con Arrays.
Una Pila se puede implementar mediante arrays o mediante listas
enlazadas. Una implementación estática se realiza utilizando un array de
tamaño fijo y una implementación dinámica mediante una lista enlazada.
El tipo Pila implementado con arrays incluye una lista (array) y un
índice a la cima de la Pila; además, una constante con el máximo número de
elementos. Al utilizar un array para contener los elementos de la pila hay que
tener en cuenta que el tamaño de la pila no puede exceder el número de
elementos del array, y la condición pila llena será significativa para el diseño.
Ejemplo 2: Una pila de 6 elementos se puede representar gráficamente así:
Cima
0 1 2 3 4 5
Pila vacía: Pila llena:
Puntero de
puntero de puntero de
la Pila
la pila=-1 a pila=5
7. El tipo Pila implementado con Arrays.
(Cont...)
Si se almacenan los datos A, B, C, . . . , en la Pila se puede representar
gráficamente de alguna de estas formas:
A B C ...
Cima = 2 C
B Índice
A
La Pila en función de diferentes situaciones de un posible programa.
Pila vacía
...
Cima=-1
Insertar 50
50 ...
Cima=-0
Insertar 25
50 25 ...
Cima= 1
Quitar (Cima) 50
Cima=-0
8. El tipo Pila implementado con Arrays.
(Cont...)
Declaración
Sintaxis: Ejemplo:
#define TAMPILA 100
#define TAMPILA 100
Tipo de dato Nombre Vector [TAMPILA];
int pila [TAMPILA];
Int cima;
int cima;
9. El tipo Pila implementado con Arrays.
(Cont...)
Implementación de las operaciones
Apilar:
Incrementa la cima de la Pila en 1 y asigna el nuevo elemento a la
lista de la Pila. Cualquier intento de añadir un elemento en una
pila llena produce un mensaje de error de desbordamiento pila y
debe terminar el programa.
void apilar ( int n )
{
if ( pilallena() = = true )
cout<< “Pila LLena”;
else
{
cima + +;
pila[cima]=n;
}
}
10. El tipo Pila implementado con Arrays.
(Cont...)
Implementación de las operaciones
Desapilar:
Copia primero el valor de cima de la Pila en una variable local auxiliar, y a
continuación decrementa la cima de la Pila en 1. El objetivo de la
operación es retirar el elemento cima, no obstante la función devuelve la
variable auxiliar para que pueda sr utilizada. Si se intenta eliminar o borrar
un elemento en una pila vacía se debe producir un mensaje de error y
terminar. int desapilar ( void )
{
int aux;
if ( pilavacia() = = true )
cout<< “Pila Vacia”;
else
{
aux=pila[cima];
cima- -;
return aux;
}
}
11. El tipo Pila implementado con
Arrays. (Cont...)
Implementación de las operaciones
Cima:
Devuelve el elemento que se encuentra en la cima de la Pila: no se
modifica la Pila.
int cima ( void )
{
return pila[cima];
}
12. El tipo Pila implementado con
Arrays. (Cont...)
Operaciones de verificación del estado de la Pila
Pila Vacía:
Verifica se la cima de la Pila es -1. En ese caso, la pila está vacía y se
devuelve un 1 (verdadero), en caso contrario, devuelve ceo (falso).
int pilavacia ( void )
{
if ( cima==-1 )
return 1;
else
return 0;
}
13. El tipo Pila implementado con
Arrays. (Cont...)
Operaciones de verificación del estado de la Pila
Pila Llena:
Verifica si la cima es TAMPILA-1. En ese caso la pila está llena y se
devuelve un 1 (verdadero) en caso contrario, se devuelve 0 (falso).
int pilallena ( void )
{
if ( cima==TAMPILA-1 )
return 1;
else
return 0;
}
14. El tipo Pila implementado con
Arrays. (Cont...)
Operaciones de verificación del estado de la Pila
Inicializar Pila:
Vacía íntegramente la Pila, para lo que pone cima al valor que se
corresponda con Pila Vacía (-1).
void inicializarpila ( void )
{
cima=-1;
}
15. Ejercicio 1.
Escribir un programa que cree una pila de enteros y realice
operaciones de apilar y desapilar,
Desarrolle un programa que permita conocer si una pila está llena o
está vacía
Desarrolle un programa que permita calcular el cuadrado de los
elementos de una pila y guardar los resultados en una segunda pila