Uso De Pilas Y Colas
Enviado por Renhec • 19 de Julio de 2013 • 2.212 Palabras (9 Páginas) • 457 Visitas
UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA
Centro Regional de Chiquimulilla, Facultad de Ingeniería en Sistemas
Curso: Estructuras de Datos
Catedrática: Inga. Kélita Mayorga.
LABORATORIO # 1 Pilas.
UTILIZACION DE PILAS COMO ESTRUCTURAS DE DATOS
Una pila es una estructura de datos en donde el primer elemento que entra es el último en salir, y por consiguiente el último en ingresar será el primero en salir.
Las operaciones básicas que se manejan en pilas son:
• Push: ingresar un elemento en la pila.
• Pop: eliminar un elemento de la pila.
• Consulta tope: consultar el elemento que sigue en la pila.
• Lleno: consulta si la pila está llena.
• Vacío. Consulta si la pila esta vacía.
PUNTOS A CONSIDERAR
• Para manejar la pila con vectores manejamos un número máximo de elementos y una variable llamada tope la cual nos indica cual es el elemento que sigue en la pila.
• Sabemos que la pila esta llena cuando el tope llega al máximo número de elementos de esta
• Sabemos que esta vacía cuando el tope esta en el valor que inicialmente se le da (normalmente –1 si lo hacemos en C++)
• Para ingresar un elemento en la pila primero incrementamos el tope y después guardamos el elemento en esa posición.
• Para remover un elemento de la pila decrementamos el tope.
EJEMPLO MANEJANDO EL ARREGLO COMO PARTE DE LA CLASE.
#include <conio.h>
#include <iostream.h>
#define max 20
class pila
{
int *elemento; //atributos
int tope; //atributos
public:
pila(); // constructor
~pila(); // destructor
int lleno(); //funciones xq debuelben algo
int vacio();
void push(int); //procedimientos
void pop(void);
void topepila(void);
};
int pila::lleno()
{
if (tope==max-1)
return 1;
else
return 0;
}
int pila::vacio()
{
if (tope==-1)
return 1;
else
return 0;
}
void pila::pila( )
{
tope =-1;
elemento = new int [max]; //sera un arreglo de enteros de tamano 20
}
void pila::~pila( )
{
delete [] elemento;
}
void pila::push(int dato)
{
if (lleno())
cout<<"Hay un desbordamiento en la pila ";
else
{
tope++;
elemento[tope]=dato;
cout<<"Se inserto el elemento en la pila";
}
getch();
}
void pila::pop(void)
{
if (vacio())
cout<<"Hay un subdesbordamiento";
else
{
cout<<"El elemento "<<elemento[tope]<<"sera borrado";
tope--;
}
getch();
}
void pila::topepila(void)
{
if (vacio())
cout<<"No hay nada";
else
cout<<"Elemento "<<elemento[tope];
getch();
}
void main()
{
pila p;
int datos,op;
do
{
clrscr();
cout<<"Menu\n1.Push\n2.Pop\n";
cout<<"3.Consultar\n4.Salir\nque opcion";
cin>>op;
switch(op)
{
case 1:clrscr();
cout<<"Que dato quieres ";
cin>>datos;
p.push(datos);
getch();
break;
case 2:
clrscr();
p.pop();
getch();
break;
case 3: clrscr();
p.topepila();
}
}while(op!=4);
}
EJEMPLO MANEJANDO PILAS CON ARREGLOS DE ESTRUCTURAS.
#include <conio.h>
#include <iostream.h>
#define max 20
struct datos
{
int codigo;
char nombre[30];
};
class pila
{ //En este caso el elemento es de tipo estructura, pero se maneja igual
datos elementos[max];
int tope;
public:
pila();
int lleno();
int vacio();
void push(datos);
datos pop(void);
void topepila(void);
};
int pila::lleno()
{
if (tope==max-1)
return 1;
else
return 0;
}
int pila::vacio()
{
if (tope==-1)
return 1;
else
return 0;
}
pila::pila( )
{
tope =-1;
}
void pila::push(datos d)
{
if (lleno())
cout<<"Hay un desbordamiento en la pila ";
else
{
tope++;
elementos[tope]=d;
cout<<"Se inserto el elemento en la pila";
}
getch();
}
datos pila::pop(void)
{ datos aux;
if (vacio())
{
cout<<"Hay un subdesbordamiento";
aux.codigo=-1;
}
else
{
aux=elementos[tope];
tope--;
}
getch();
return aux;
}
void pila::topepila(void)
{
if (vacio())
...