Título: duda en pila con lenguaje c Publicado por: king1517 en 29 Junio 2011, 15:55 pm Ante todo buenos dias y un cordial saludo este es mi problema el programa no me quiere correr ,quisiera saber cuales son mis errores:
ya que soy un poco nuevo en esto #include <stdio.h> #include <stdlib.h> #include <conio.h> typedef int tipo; typedef struct Pila { int aux; int dato; struct Pila *Sig; }PILAD; // Funciones R-W void InsertaPila(PILAD **, tipo); tipo eliminar(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; } void mostrar(PILAD *p) { PILAD *aux; aux = p; printf("\nElementos existentes en la Pila:\n"); if(aux == NULL) { printf("\n No hay Datos en la Pila!..."); } else { while(aux != NULL) { printf("--> %i\n",aux->dato); aux = aux->sig; } } } void tope(PILAD *p) { PILAD *aux; aux = p; if (aux != NULL) { printf("\n\nEl Primer ELEMENTO de la Pila es: %i",aux->dato); } } tipo eliminar(PILAD **A) { tipo cont; PILAD *auxiliar = (PILAD *)malloc(sizeof(PILAD)); aux =*A; if(!aux) { cont = aux->dato; *A = (*A)->Sig; free(aux); return cont; } else { printf("Pila vacia"); exit(-1); } } void Borrar Pila(PILAD **A) { tipo Elem; while (!A) { Elem = eliminar (A); } } void ImprimirPila(PILAD *A) { PILAD *Aux=(PILAD *)malloc(sizeof(PILAD)); int Elem; for(Aux=A;Aux->Sig!=NULL;Aux=Aux->Sig) { Elem = Aux->dato; printf(" %d \n",Elem); } } //#include "funciones.cpp" int 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 el primer 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",eliminar(&A)); break; case 3: system("cls"); printf ("\n\n El primer elemento de la pila es: %d",Tope (A)); break; case 4: system("cls"); BorrarPila(&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' ); } Título: Re: duda en pila con lenguaje c Publicado por: king1517 en 29 Junio 2011, 16:04 pm Ante todo buenos dias y un cordial saludo este es mi problema el programa no me quiere correr ,quisiera saber cuales son mis errores: ya que soy un poco nuevo en esto #include <stdio.h> #include <stdlib.h> #include <conio.h> typedef int tipo; typedef struct Pila { int aux; int dato; struct Pila *Sig; }PILAD; // Funciones R-W void InsertaPila(PILAD **, tipo); tipo eliminar(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; } void mostrar(PILAD *p) { PILAD *aux; aux = p; printf("\nElementos existentes en la Pila:\n"); if(aux == NULL) { printf("\n No hay Datos en la Pila!..."); } else { while(aux != NULL) { printf("--> %i\n",aux->dato); aux = aux->sig; } } } void tope(PILAD *p) { PILAD *aux; aux = p; if (aux != NULL) { printf("\n\nEl Primer ELEMENTO de la Pila es: %i",aux->dato); } } tipo eliminar(PILAD **A) { tipo cont; PILAD *auxiliar = (PILAD *)malloc(sizeof(PILAD)); aux =*A; if(!aux) { cont = aux->dato; *A = (*A)->Sig; free(aux); return cont; } else { printf("Pila vacia"); exit(-1); } } void Borrar Pila(PILAD **A) { tipo Elem; while (!A) { Elem = eliminar (A); } } void ImprimirPila(PILAD *A) { PILAD *Aux=(PILAD *)malloc(sizeof(PILAD)); int Elem; for(Aux=A;Aux->Sig!=NULL;Aux=Aux->Sig) { Elem = Aux->dato; printf(" %d \n",Elem); } } //#include "funciones.cpp" int 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 el primer 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",eliminar(&A)); break; case 3: system("cls"); printf ("\n\n El primer elemento de la pila es: %d",Tope (A)); break; case 4: system("cls"); BorrarPila(&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' ); } Título: Re: duda en pila con lenguaje c Publicado por: leogtz en 29 Junio 2011, 18:28 pm Código
Te dejo el programa compilando, tiene bastantes errores, trata de resolverlos sino nos dices para ayudarte. Algo importante, cuando trabajas con listas enlazadas o pilas, como quieras decirle, cuando vas a empezar a agregar elementos es importante que la inicialices a NULL. Código
Consejo, usa nombres para las variables que te digan algo, A no es un buen identificador, no dice NADA. Otra cosa, aunque des la opción de eliminar la pila, debes vaciar la memoria asignada, independientemente de que el usuario no quiera. Saludos. |