elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Ayuda solucionar error en PILAS en C. en: 10 Abril 2016, 08:13 am
Hola tengo una duda, al imprimir mi pila se cae el programa y no entiendo por que ! me estoy frustrando, agradecería muchísimo su ayuda. de ante mano Muchas gracias!


Aquí les va mi código !!

Código:
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

//creacion de la estructura
typedef struct Pila {
    int *dato;
    struct Pila *sgte;
}Pila;

//asignacion de memoria
Pila *asignarMemoria(){
return (Pila *)malloc(sizeof(Pila));
}

//apilado
Pila *apilar(Pila *p, int dato){

Pila *q = asignarMemoria(); //Pila auxiliar
q->dato=dato;
q->sgte=NULL;

if(p==NULL){
return q;
}
q->sgte = p;
p = q;
return p;
}

//desapilado
Pila *desapilar(Pila *p){

if(p == NULL){
return p;
}
Pila *q = p->sgte;
p->sgte = NULL;
free(p); //liberar memoria
return q;
}

//listar la pila
void mostrarPila (Pila *p){

if(p!=NULL){
Pila *q = p; //pila auxiliar
while(q!=NULL){
printf("%d ", q->dato);
q = desapilar(q);
}
return;
}
printf("No hay elementos en la Pila\n");
}
//buscar un elemento en la pila
int buscarPila(Pila *p, int dato){
if(p!=NULL){
Pila *q = p; //pila auxiliar
while(q!=NULL){
if(q->dato==dato){
return 1; //verdadero si lo encuentra.
}
q = desapilar(q);
}
return 0; //falso, si no lo encuentra.
}
return 0; //falso, si no lo encuentra.
}

int main(int argc, char *argv[]) {

//Menu Principal.
int opcionMenu, volverIntentar, scanfValidador;
srand(time(NULL));  //Semilla del creador de numeros Randoms

do{
do{

printf("Seleccione una opcion\n");
printf("[1] Ejercicio 1\n[2] Ejercicio 2\n[3] Ejercicio 3\n[4] Salir\n");
scanfValidador = scanf("%d", &opcionMenu);
fflush(stdin);
if(scanfValidador!=1){
printf("\nOpcion no valida, ingrese un valor numererico positivo.\n");
puts("");
}
}while(scanfValidador!=1); //Validador
   
    if(opcionMenu == 1){
    // Crear y listar una pila con n elementos. Ingresar un dato y consultar cuantas veces se repite y en que posiciones.
Pila *pila;
int n, i; //tamaño n de la pila
int numRand;
int scanfValidador3;

do{
      puts("Ingrese tamaño de la Pila la cual tendra numeros random del [0-10]");
      scanfValidador3 = scanf("%d", &n);
      fflush(stdin);
      if(scanfValidador3!=1){
      printf("\nOpcion no valida, ingrese un valor numererico positivo.\n");
      puts("");
}
      }while(scanfValidador3!=1); //Validador
      i=n;
     
      while(n!=0){ //Recorrer Pila
      numRand = rand() % 11; // genera un numero Random entre el 0 y el 10
      //pila->sgte=NULL;
      pila = apilar(pila, numRand);
n--;
}
while(i!=0){
mostrarPila(pila);
i--;

}

else if(opcionMenu == 2){
printf("Opcion 2\n");
}

else if(opcionMenu == 3){
printf("Opcion 3\n");
}

else if(opcionMenu == 4){
exit(0);
}
else{
puts("");
printf("Opcion invalida\n");
puts("");
}
int scanfValidador2;
do{
printf("\nPara volver a intentar preciona [1] y da enter.\nPara salir use cualquier otro numero y precione enter.\n");
puts("");
scanfValidador2 = scanf("%d", &volverIntentar);
fflush(stdin);
if(scanfValidador2!=1){
printf("\nOpcion no valida, ingrese un valor numererico positivo.\n");
puts("");
}
}while(scanfValidador2!=1); //Validador
}while(volverIntentar==1);
return 0;
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines