Nuevamente Danielito con algún inconveniente con lista enlazada, lo que ocurre es que si ingreso un dato o más todo bien pero si la lista está vacía me da el error que dejo en la imagen a continuación. -
Encuentro muchos ejs., pero casi todos son sin ingreso por teclado sino con datos ingresados antes de compilar, me parece que tiene que ver conque la lista esta igualada a NULL o sea que no apunta a ninguna dirección en concreto pero no logro dar con la tecla
Código
#include <stdio.h> #include <stdlib.h> #include <limits.h> struct nodo{ int dato; struct nodo *siguiente; }; struct lista{ struct nodo *primero; struct nodo *ultimo; int elementos; }; void menu( void ); void limpiar( void ); struct lista *agregar( struct lista *L ); struct nodo *crear( int dato ); void mostrar( struct lista *L ); int main( void ){ menu(); return 0; } void menu( void ){ struct lista *Lista = NULL; int opc, ok, ch; do{ do{ limpiar(); }while( !ok ); switch ( opc ){ case 1: Lista = agregar( Lista ); break; break; break; break; case 5: mostrar( Lista ); break; case 6:; break; } }while( opc != 6 ); } void limpiar( void ){ } struct lista *agregar( struct lista *L ){ int ok, ch, dto; do{ limpiar(); }while( !ok ); if( L != NULL ){ struct nodo *e = crear( dto ); L->ultimo->siguiente = e; L->ultimo = e; L->elementos++; return L; }else{ struct nodo *e = crear( dto ); l->primero = e; l->ultimo = e; l->elementos = 1; return l; } } struct nodo *crear( int dato ){ e->dato = dato; e->siguiente = NULL; return e; } void mostrar( struct lista *L ){ struct nodo *auxiliar; int i=0; auxiliar = L->primero; while( auxiliar != NULL ){ auxiliar = auxiliar->siguiente; i++; } }
Saludos.