Vous êtes sur la page 1sur 7

UNIVERSIDAD POLITECNICA DE ATLACOMULCO

INGENIERIA ROBOTICA

PILAS
ALUMNO:

DANIEL MATEO ANTONIO


CUATRIMESTRE : 2 201 - T.M.

FECHA DE ENTRGA:
29 DE MARZO DEL 2016

CALIFICACION:

Pilas en C++
Definicin
Qu es una pila?
Una pila (stack) es una estructura de datos, que consta de una serie de datos, en
la cual las inserciones y eliminaciones se hacen por un extremo,
llamado cima (top), de la pila. La estructura pila se conoce como LIFO (last-in,
first-out,ltimo en entrar, primero en salir), que significa ltimo elemento
introducido, primero sacado.

Operaciones fundamentales
Las operaciones fundamentales introducir y eliminar se hacen por un extremo de
la pila llamado cima (top).
Veamos algunos ejemplos de pilas en la vida cotidiana:

Ejemplos en Computacin
l Llamado a funciones.

El programa principal llama a una funcin.

La funcin llama a otra funcin.

La pila indica dnde debe regresar la funcin una vez que se termina la
misma lo indica la pila ltima funcin que hizo el llamado, primera en volver .

Aplicacin principal ]FUNCIONES RECURSIVAS.

l Bucles anidados.

ltimo bucle en abrirse, primero en cerrarse.

l Condiciones anidadas.

ltima condicin en abrirse, primera en cerrarse.

Evolucin de la PILA

Operaciones bsicas de la PILA


Crear o inicializar inicializar una pila (p) vaca.
Pila vaca (empty) determinar si una pila esta vaca.
Pila llena
Meter (push)
Sacar (pop)

determina si la pila se ha llenado.


inserta un elemento en la cima de la pila.
recupera y elimina el ltimo elemento en la cima de la pila.

Esta estructura se aplica en multitud de ocasiones en el rea de informtica


debido a su simplicidad y ordenacin implcita de la propia estructura.
Para el manejo de los datos se cuenta con dos operaciones bsicas: apilar (push),
que coloca un objeto en la pila, y su operacin inversa, retirar (o desapilar, pop),
que retira el ltimo elemento apilado.

Por analoga con objetos cotidianos, una operacin apilar equivaldra a colocar un
plato sobre una pila de platos, y una operacin retirar a retirarlo.

Implementacin:
/*
* C++ - Pilas/Stack
* Copyright 2014 Martin Cruz Otiniano
* Description : Apila elemento, Desempila elemento, Mostrar pila, Destruir Pila
* Site
: martincruz.me
*/
#include <iostream>
using namespace std;
struct nodo{

int nro;
struct nodo *sgte;
};
typedef nodo *ptrPila; // creando nodo tipo puntero( tipo de dato )
/*
Apilar elemento
------------------------------------------------------------------------*/
void push( ptrPila &p, int valor )
{
ptrPila aux;
aux = new(struct nodo); // apuntamos al nuevo nodo creado
aux->nro = valor;
aux->sgte = p ;
p = aux ;
}
/*
Desapilar elemento(devuelve elemento)
------------------------------------------------------------------------*/
int pop( ptrPila &p )
{
int num ;
ptrPila aux;
aux = p ;
num = aux->nro; // asignamos el primer vamor de la pila
p = aux->sgte ;
delete(aux);
return num;
}
/*
Muestra elementos de la pila
------------------------------------------------------------------------*/
void mostrar_pila( ptrPila p )
{
ptrPila aux;
aux = p; // apunta al inicio de la lista
while( aux !=NULL )
{
cout<<"\t"<< aux->nro <<endl;
aux = aux->sgte;
}

}
/*
Eliminar todos los elementos de la pila
------------------------------------------------------------------------*/
void destruir_pila( ptrPila &p)
{
ptrPila aux;
while( p != NULL)
{
aux = p;
p = aux->sgte;
delete(aux);
}
}
/*
Menu de opciones
------------------------------------------------------------------------*/
void menu()
{
cout<<"\n\t IMPLEMENTACION DE PILAS EN C++\n\n";
cout<<" 1. APILAR
"<<endl;
cout<<" 2. DESAPILAR
"<<endl;
cout<<" 3. MOSTRAR PILA
"<<endl;
cout<<" 4. DESTRUIR PILA
"<<endl;
cout<<" 5. SALIR
"<<endl;
cout<<"\n INGRESE OPCION: ";
}
/*
Funcion Principal
------------------------------------------------------------------------*/
int main()
{
ptrPila p = NULL; // creando pila
int dato;
int op;
int x ; // numero que devuelve la funcon pop
system("color 0b");
do
{
menu(); cin>> op;
switch(op)

{
case 1:
cout<< "\n NUMERO A APILAR: "; cin>> dato;
push( p, dato );
cout<<"\n\n\t\tNumero " << dato << " apilado...\n\n";
break;
case 2:
x = pop( p );
cout<<"\n\n\t\tNumero "<< x <<" desapilado...\n\n";
break;
case 3:
cout << "\n\n MOSTRANDO PILA\n\n";
if(p!=NULL)
mostrar_pila( p );
else
cout<<"\n\n\tPila vacia..!"<<endl;
break;
case 4:
destruir_pila( p );
cout<<"\n\n\t\tPila eliminada...\n\n";
break;
}
cout<<endl<<endl;
system("pause"); system("cls");
}while(op!=5);
return 0;
}

Vous aimerez peut-être aussi