#include // incluye librería de windows #include

Anuncio
#include <windows.h>
// incluye librería de windows
#include <iostream>
//incluye librería de entradas y salidas
using namespace std;
// esto es para generalizar el uso de espacios
struct nodo{
// creación de la estructura nodo
int nro;
// declarar dato entero
struct nodo *sgte;
// declarar nodo
};
typedef nodo *ptrPila;
// Apilar elemento
void push( ptrPila &p, int valor ) {
//crear método de la pila donde insertara el dato valor
ptrPila aux;
// creación de puntero con valor aux.
aux = new(struct nodo);
// el dato aux toma el valor de new
aux->nro = valor;
// el apuntador nro sera ahora valor
aux->sgte = p ;
// el apuntador sgte sera ahora p
p = aux ; }
// el valor de p sera aux
// Opciones
void menu() {
// creación del método menu
cout<<"\n\t IMPLEMENTACION DE PILAS EN C++\n\n";
// impresión en escritorio
cout<<" 1. APILAR
// impresión en escritorio
cout<<" 2. DESAPILAR
cout<<" 3. MOSTRAR PILA
cout<<" 4. DESTRUIR PILA
cout<<" 5. SALIR
cout<<"\n INGRESE OPCION: "; }
"<<endl;
"<<endl;
"<<endl;
"<<endl;
"<<endl;
// impresión en escritorio
// impresión en escritorio
// impresión en escritorio
// impresión en escritorio
// impresión en escritorio
//Desapilar el elemento
int pop( ptrPila &p ) {
// método pop con parámetros
int num ;
// declarar dato entero
ptrPila aux;
//declarar aux del tipo ptrPila
aux = p ;
// cambio de asignación de valor
num = aux->nro;
// el dato num sera apuntado a nro
}p = aux->sgte ;
// el dato p sera apuntado aux-> sgte
delete(aux);
// borrara aux
return num; }
// retornara el dato num
// Mostrar la pila
void mostrar_pila( ptrPila p ) {
// método mostrar_pila con parámetro
ptrPila aux;
// declara aux del tipo ptrPila
aux = p;
// asigna que aux sera p
while( aux !=NULL )
{
// esto se hara mientras aux sea diferente de null
cout<<"\t"<< aux->nro <<endl;
// impresión en escritorio
aux = aux->sgte;
// asigna a aux como sgte
}
}
// Eliminar pila
void destruir_pila( ptrPila &p) {
// método destruir_pila con parametro
ptrPila aux;
// declarar dato aux de procedencia ptrPila
while( p != NULL)
{
// hacer mientras p diferente de NULL
aux = p;
// aux sea asigna ahora a p
p = aux->sgte;
// p sera igual a sgte
delete(aux);
}}
// se eliminara el dato aux
int main() {
// se especifica el método main
ptrPila p = NULL;
// el puntero p se asigna a NULL
int dato;
// se declara un entero dato
int op;
// se declara un entero op
int x ;
// se declara un entero x
system("color 0b");
// se adjunta un color a la ventana
do
// se emplea el do while
{
menu();
// aplica el método menú
cin>> op;
switch(op)
// guarda el dato op
{
// se crea un switch
case 1:
// se maneja el primer caso
cout<< "\n NUMERO A APILAR: "; cin>> dato;
// se imprime en pantalla
push( p, dato );
// se inserta en la pila
cout<<"\n\n\t\tNumero " << dato << " apilado...\n\n";
// impresión de pantalla
break;
// termina el primer caso
case 2:
// se maneja el segundo caso
x = pop( p );
// se asigna x a el método p con parámetro p
cout<<"\n\n\t\tNumero "<< x <<" desapilado...\n\n";
// impresión de pantalla
break;
// se cierra el segundo caso
case 3:
// se maneja el tercer caso
cout << "\n\n MOSTRANDO PILA\n\n";
// impresión en pantalla
if(p!=NULL)
// condicionante ( si p diferente de NULL)
mostrar_pila( p );
// mostrara lo que contiene este metodo
else
// si no aplica mostrara esto en pantalla
cout<<"\n\n\tPila vacia..!"<<endl;
break;
// se cierra caso tres
case 4:
// se maneja cuarto caso
destruir_pila( p );
// aplicara el método aquí asignado
cout<<"\n\n\t\tPila eliminada...\n\n";
// impresión de pantalla
break;
// se cierra el cuarto caso
}
cout<<endl<<endl;
// se emplea salto de linea
system("pause"); system("cls");
// se emplea una pausa en el programa
} while(op!=5);
// aplica la condición del do while
return 0; }
// se cierra retornando cero
Descargar