PilasPilas
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
Punto Fijo, junio de 2006
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.
Ejemplo 1:
Novela
Novela
Enciclopedia
Enciclopedia
Diccionario
Diccionario
Agregar un nuevo
elemento
Eliminar un
elemento
Cima
Fondo
Novela
Enciclopedia
Diccionario
Aplicaciones
 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+2 – (3+4)
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.
Pila Vacía
CIMA E3 CIMA E4
CIMA E2 E2 CIMA E2 E2
CIMA E1 E1 E1 E1 E1
APILAR APILAR APILAR APILARDESAPILAR
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í:
0 1 2 3 4 5
Cima
Pila vacía:
puntero de
la pila=-1
Puntero de
la Pila
Pila llena:
puntero de
a pila=5
El tipo Pila implementado con Arrays.
(Cont...)
A B C ...
Índice
Si se almacenan los datos A, B, C, . . . , en la Pila se puede representar
gráficamente de alguna de estas formas:
C
B
A
Cima = 2
La Pila en función de diferentes situaciones de un posible programa.
...
50 ...
50 25 ...
50
Pila vacía
Cima=-1
Insertar 50
Cima=-0
Insertar 25
Cima= 1
Quitar (Cima)
Cima=-0
El tipo Pila implementado con Arrays.
(Cont...)
Sintaxis:
#define TAMPILA 100
Tipo de dato Nombre Vector [TAMPILA];
Int cima;
Ejemplo:
#define TAMPILA 100
int pila [TAMPILA];
int cima;
DeclaraciónDeclaración
El tipo Pila implementado con Arrays.
(Cont...)
Implementación de las operacionesImplementació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;
}
}
El tipo Pila implementado con Arrays.
(Cont...)
Implementación de las operacionesImplementació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;
}
}
El tipo Pila implementado con
Arrays. (Cont...)
Implementación de las operacionesImplementació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];
}
El tipo Pila implementado con
Arrays. (Cont...)
Operaciones de verificación del estado de la PilaOperaciones 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;
}
El tipo Pila implementado con
Arrays. (Cont...)
Operaciones de verificación del estado de la PilaOperaciones 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;
}
El tipo Pila implementado con
Arrays. (Cont...)
Operaciones de verificación del estado de la PilaOperaciones 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;
}
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

Pilasen c++

  • 1.
    PilasPilas REPÚBLICA BOLIVARIANA DEVENEZUELA 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 Punto Fijo, junio de 2006
  • 2.
    Concepto de Pila Esun 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: Novela Novela Enciclopedia Enciclopedia Diccionario Diccionario Agregar unnuevo elemento Eliminar un elemento Cima Fondo Novela Enciclopedia Diccionario
  • 4.
    Aplicaciones  Los editoresde 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+2 – (3+4)
  • 5.
    Operaciones Básicas deManipulació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. Pila Vacía CIMA E3 CIMA E4 CIMA E2 E2 CIMA E2 E2 CIMA E1 E1 E1 E1 E1 APILAR APILAR APILAR APILARDESAPILAR
  • 6.
    El tipo Pilaimplementado 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í: 0 1 2 3 4 5 Cima Pila vacía: puntero de la pila=-1 Puntero de la Pila Pila llena: puntero de a pila=5
  • 7.
    El tipo Pilaimplementado con Arrays. (Cont...) A B C ... Índice Si se almacenan los datos A, B, C, . . . , en la Pila se puede representar gráficamente de alguna de estas formas: C B A Cima = 2 La Pila en función de diferentes situaciones de un posible programa. ... 50 ... 50 25 ... 50 Pila vacía Cima=-1 Insertar 50 Cima=-0 Insertar 25 Cima= 1 Quitar (Cima) Cima=-0
  • 8.
    El tipo Pilaimplementado con Arrays. (Cont...) Sintaxis: #define TAMPILA 100 Tipo de dato Nombre Vector [TAMPILA]; Int cima; Ejemplo: #define TAMPILA 100 int pila [TAMPILA]; int cima; DeclaraciónDeclaración
  • 9.
    El tipo Pilaimplementado con Arrays. (Cont...) Implementación de las operacionesImplementació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 Pilaimplementado con Arrays. (Cont...) Implementación de las operacionesImplementació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 Pilaimplementado con Arrays. (Cont...) Implementación de las operacionesImplementació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 Pilaimplementado con Arrays. (Cont...) Operaciones de verificación del estado de la PilaOperaciones 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 Pilaimplementado con Arrays. (Cont...) Operaciones de verificación del estado de la PilaOperaciones 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 Pilaimplementado con Arrays. (Cont...) Operaciones de verificación del estado de la PilaOperaciones 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 unprograma 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