elijo opcion 1 guardo numero 2 vuelvo a elejir opcion 1 y guardo numero 1 se rompe alguien me puede decir ¿por que?
aqui les pongo el codigo
Código C:
Ver original
#include<stdio.h> #include<stdlib.h> struct nodo{ int dato; nodo *siguiente; }; int menu(); void *crear(void *); void *eliminar(void *); void *mostrar(void *); main(){ void *p=NULL; int x; do{ x=menu(); switch(x){ case 1: p=crear(p); continue; case 2: p=eliminar(p); break; case 3: p=mostrar(p); continue; } }while(x<4); } int menu(){ int x; do{ }while(x<1&&x>4); return x; } void *crear(void *p){ nodo *q,*aux,*aux1; q->siguiente=NULL; if(p==NULL){ p=q; } else{ aux=(nodo*)p; if(q->dato<aux->dato){ q->siguiente=aux; p=q; } else{ aux=(nodo*)p; while(aux->dato<q->dato&&aux->siguiente!=NULL){ aux1=aux; aux=aux->siguiente; } } if(aux->siguiente==NULL&&aux->dato<q->dato){ aux->siguiente=q; } else{ aux1->siguiente=q; q->siguiente=aux; } } return (p); } void *eliminar(void *p){ nodo *q,*aux,*aux1; int x; aux=(nodo*)p; if(p==NULL){ } else{ while(aux->dato<x&&aux->siguiente!=NULL){ aux1=aux; aux=aux->siguiente; } if(aux->dato==x){ if(aux==p){ if(aux==NULL){ p=NULL; } else{ p=aux->siguiente; } } else{ if(aux->siguiente==NULL){ aux1->siguiente=NULL; } else{ aux1=aux->siguiente; } } } else{ } } return p; } void *mostrar(void *p){ nodo*s; s=(nodo*)p; if(p==NULL){ } else{ do{ s=s->siguiente; }while(s!=NULL); } return p; }