PILAS
CODIGO DE PILAS EN C++
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<alloc.h>
struct nodo
{
int nro; // en este caso es un numero entero
struct nodo *siguiente;
};
typedef struct nodo *Pila; //estamos definiendo tipo de datos a struct nodo
//Funciones con pilas
void push( Pila &p, int valor );
int pop( Pila &p );
void mostrarpila( Pila p );
void destruirpila( Pila &p);
//*****************************
int main()
{
Pila pila = NULL;//ya aviamos declarado el tipo lista y lo ponemos null
int op,x,n,npop;
do
{
system("cls");
printf("***MENU***\n\n");
printf("1. Apilar\n");
printf("2. Desapilar\n");
printf("3. Mostrar pila\n"); //menu para pilas
printf("4. Destruir pila\n");
printf("5. Salir\n\n");
printf("Digite la opcion: ");
scanf("%d",&op);
switch(op)
{
case 1:
do
{
system("cls");
printf("Digite Cero (0) para salir\n");
printf("Digite el dato que desea agregar:");
scanf("%d",&x);
if (x!=0)
push(pila,x);//le enviamos a apilar el valor de (x)
printf("El dato ha sido apilado\n");
}while (x!=0);
system("pause");
break;
case 2:
mostrarpila(pila);
npop=pop(pila); //para desapilar dato
printf("El dato a sido desapilado\n");
mostrarpila(pila);
system("pause");
break;
case 3:
printf("Mostrando Pila\n");
if(pila!=NULL)
mostrarpila(pila); //muestra el estado actual de la pila
else
printf("La Pila esta vacia...\n");
system("pause");
break;
case 4:
mostrarpila(pila);
destruirpila(pila);
printf("La pila ha sido destruida");
system("pause");
break;
case 5:
printf("HA SALIDO DEL PROGRAMA!\n");
break;
default:
printf("Opcion no valida!\n");
system("pause");
}
} while(op!=5);
system("pause");
return 0;
}
// PARA APILAR DATOS
void push( Pila &p, int valor )
{
Pila aux;
aux = new(struct nodo); // apuntamos al nuevo nodo creado
aux->nro = valor;
aux->siguiente = p ;
p = aux ;
}
// PARA DESAPILAR DATOS
int pop( Pila &p )
{
int num ;
Pila aux;
aux = p ;
num = aux->nro; // asignamos el primer vamor de la pila
p = aux->siguiente ;
delete(aux);
return num;
}
void mostrarpila( Pila p )
{
Pila aux;
aux = p; // apunta al inicio de la lista
while( aux !=NULL )
{
printf(" %d \t", aux->nro);
aux = aux->siguiente;
}
}
/* Eliminar todos los elementos de la pila
------------------------------------------------------------------------*/
void destruirpila( Pila &p)
{
Pila aux;
while( p != NULL)
{
aux = p;
p = aux->siguiente;
delete(aux);
}
}
No hay comentarios.:
Publicar un comentario