Autor
|
Tema: duda en pila con lenguaje c (Leído 2,923 veces)
|
king1517
Desconectado
Mensajes: 2
|
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' ); }
|
|
|
En línea
|
|
|
|
king1517
Desconectado
Mensajes: 2
|
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' ); }
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
#include <stdio.h> #include <stdlib.h> typedef int tipo; typedef struct Pila { int aux; int dato; struct Pila *Sig; } PILAD; void InsertaPila(PILAD **, tipo); tipo eliminar(PILAD **); int Tope(PILAD *); void BorraPila(PILAD **); void ImprimirPila(PILAD *); 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("--> %d\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 ); } } int eliminar(PILAD **A) { tipo cont; PILAD *auxiliar = (PILAD *)malloc(sizeof(PILAD )); PILAD *aux = *A; if(!aux) { cont = aux->dato; *A = (*A)->Sig; return cont; } else { } } void BorrarPila(PILAD **A) { int Elem; while (!A) { Elem = eliminar (A); } } void ImprimirPila(PILAD *A) { PILAD *Aux = A; int Elem; // for(Aux = A; Aux != NULL; Aux = Aux->Sig) // { // Elem = Aux->dato; // printf(" %d \n", Aux->dato); // } while(Aux != NULL) { Aux = Aux->Sig; } } //#include "funciones.cpp" int main () { char Opc1; int Opc2,aux; PILAD *A = NULL; do { 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: "); switch(Opc2) { case 1: printf ("\n\n Ingresa un numero para insertar en la pila: "); InsertaPila (&A, aux); break; case 2: printf ("\n\n El ultimo elemento extraido de la pila es: %d",eliminar (&A )); break; case 3: //printf ("\n\n El primer elemento de la pila es: %d",Tope (A)); break; case 4: BorrarPila(&A); printf ("\n\n La pila a sido eliminada exitosamente"); break; case 5: ImprimirPila(A); break; case 6: break; default: printf ("La opcion no es valida"); break; } printf ("\n\nDeseas seguir en esta aplicacion [S/N]: "); } while ( Opc1 == 'S' || Opc1 == 's' ); }
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. PILAD *A = NULL;
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.
|
|
« Última modificación: 29 Junio 2011, 18:30 pm por Leo Gutiérrez. »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda acerca de la pila en VB
Programación Visual Basic
|
Krnl64
|
4
|
2,039
|
21 Julio 2006, 13:38 pm
por Krnl64
|
|
|
[DUDA] mover a la pila
ASM
|
blackray
|
4
|
3,854
|
10 Septiembre 2009, 03:07 am
por blackray
|
|
|
nueva duda pila en C
« 1 2 »
Programación C/C++
|
pakleisito
|
13
|
8,513
|
28 Mayo 2011, 16:50 pm
por D4RIO
|
|
|
Duda: Crear una pila contando palabras encontradas en un string
PHP
|
Darkkz
|
2
|
2,468
|
10 Septiembre 2011, 23:35 pm
por Darkkz
|
|
|
Duda puntero a pila.
Programación General
|
lanun
|
0
|
1,655
|
27 Marzo 2014, 20:05 pm
por lanun
|
|