bueno lo principal de la implementacion ya esta que es pop push el problema viene cuando intento borrar la pila por completo e imprimirla bueno este es el codigo:
Directiva.h
Código:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef int tipo;
typedef struct Pila
{
tipo dato;
struct Pila *Sig;
}PILAD;
// Funciones R-W
void InsertaPila(PILAD **, tipo);
tipo Remover(PILAD **);
tipo Tope(PILAD *);
void BorraPila(PILAD **);
void ImprimirPila(PILAD *);
Funciones.cpp
Código:
#include "Directiva.h"
void InsertaPila(PILAD **top ,tipo Elem)
{
PILAD *Aux = (PILAD *)malloc(sizeof(PILAD));
Aux->dato=Elem;
Aux->Sig = *top;
*top = Aux;
}
tipo Remover(PILAD **A)
{
tipo cont;
PILAD *aux = (PILAD *)malloc(sizeof(PILAD));
aux=*A;
if(!aux)
{
cont = aux->dato;
*A = (*A)->Sig;
free(aux);
return cont;
}
else
{
printf("Pila vacia");
exit(-1);
}
}
tipo Tope(PILAD *A)
{
return(A->dato);
}
void BorraPila(PILAD **A)
{
tipo Elem;
while (!A)
{
Elem = Remover (A);
}
}
void ImprimirPila(PILAD *A)
{
PILAD *Aux=(PILAD *)malloc(sizeof(PILAD));
tipo Elem;
for(Aux=A;Aux->Sig!=NULL;Aux=Aux->Sig)
{
Elem = Aux->dato;
printf(" %d \n",Elem);
}
}
main.cpp
Código:
#include "funciones.cpp"
main ()
{
char Opc1;
int Opc2,aux;
PILAD *A;
do
{
system ("cls");
printf ("\t\t Estructura Pila Dinamica\n\n\n");
printf ("1.- Insertar elemento en pila ");
printf ("\n2.- Quitar elemento de pila");
printf ("\n3.- Ver ultimo elemento y el numero de elemtos en la pila");
printf ("\n4.- Vaciar la pila");
printf ("\n5.- Ver elcontenido de la pila");
printf ("\n6.- Salir de la aplicacion");
printf ("\n\n\n Inserta el numero de la funcion a realizar: ");
scanf ("%d",&Opc2);
switch(Opc2)
{
case 1:
system("cls");
printf ("\n\n Ingresa un numero para insertar en la pila: ");
scanf ("%d",&aux);
InsertaPila (&A, aux);
break;
case 2:
system("cls");
printf ("\n\n El ultimo elemento extraido de la pila es: %d",Remover(&A));
break;
case 3:
system("cls");
printf ("\n\n El ultimo elemento de la pila es: %d",Tope (A));
break;
case 4:
system("cls");
BorraPila(&A);
printf ("\n\n La pila a sido eliminada exitosamente");
break;
case 5:
System ("cls");
ImprimirPila(A);
break;
case 6:
exit(-1);
break;
default:
system("cls");
printf ("La opcion no es valida");
break;
}
printf ("\n\nDeseas seguir en esta aplicacion [S/N]: ");
scanf ("%s",&Opc1);
}
while ( Opc1 == 'S' || Opc1 == 's' );
}
Bueno este fue el codigo el problema viene cuando intento ver o eliminar (Cuando hay elementos) se produce un error de accedo de memoria por favor ayudeme
ya que nesesito el programa lo mas pronto posible de antemano gracias.