#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
struct pilanodo{
int dato;
struct pilanodo *sig;
};
typedef struct pilanodo PILA;
typedef PILA *PILAPTR;
void menu(void);//no regresa valor pero no se pasa una lista de parametros
void push (PILAPTR*,int);
int pop(PILAPTR *);
int estavacia(PILAPTR );
int imprime (PILAPTR);
main()
{
PILAPTR pilaptr = NULL;// se asigna valor nulo por que no existe la pila
int opcion,valor;//para el menu de main
//llamado a un menu
menu();
do{
printf("\tElige una opcion....\n");
scanf("%d",&opcion);
switch (opcion)
{
case 1: printf("dame el valor: \n");
scanf("%d",&valor);
push(&pilaptr,valor);
break;
case 2: if (!estavacia(pilaptr))//llama una funcion dice que si no esta vacia
printf ("\n\n El valor extraido de la pila es : %d\n",pop(&pilaptr));
break;
case 3: printf("el contenido de la pila es: \n\n");
imprime(pilaptr );
break;
default: printf("El numero que ingresaste es incorrecto\n");
}
} while(opcion!=4);
getch();
}
void menu(void)
{
system ("cls");
printf("operaciones disponibles con la PILA\n\n");
printf ("1.- insertar un valor en la pila\n");
printf ("2.- extraer un valor de la pila\n");
printf ("3.- imprimir la pila\n");
printf ("4.- salir del programa\n\n\n");
}
void push (PILAPTR *aux, int valor ){
PILAPTR aux1;
aux1=malloc (sizeof (PILA));//malloc busca en memoria una area del tamanio de pila
if(aux1!= NULL)
{
aux1 -> dato = valor;
aux1 -> sig =NULL;
if(*aux==NULL)
*aux =aux1;
else{
aux1->sig=*aux;
*aux=aux1;
} }
}
int estavacia(PILAPTR aux){
return aux ==NULL;//verifica que la pila no esta vacia y manda cero o uno
}
int pop (PILAPTR*aux)//aux apuntaa pilaptr
{
if (aux==NULL){
printf("No se a ingresado ningun valor");
}
else{
PILAPTR aux1;
int salevalor;// se declara un valor entero
aux1=*aux;
*aux=aux1->sig;//sirve para pasar a pilaptr al siguiente nodo
salevalor=aux1->dato;
free (aux1);// libera el espacio en memoria para otra aplicacion
return (salevalor);//regressa un valor y e guarda en pop &pilaptr
}}
int imprime (PILAPTR aux)
{
if (aux==NULL){
printf("La pila esta vacia\n");
}
else{
system ("cls");
printf ("tope de la pila");
while (aux != NULL){
printf("\n%d\n",aux->dato);
aux=aux-> sig;
}
printf("fondo DE LA PILA\n");
}
}
No hay comentarios:
Publicar un comentario