#include #include // Manejo de memoria dinamica struct info { int dato; struct info *sig; // Enlace con el siguiente // elemento en la lista ligada }; struct info *cabeza,*aux; int menu() { int op; printf ("\n1. Insertar \n2. Eliminar "); printf ("\n3. Mostrar \n4. Salir \nOpcion: "); scanf("%i",&op); return op; } void insertar(int d) { aux=(struct info *)malloc(sizeof aux); if (aux != NULL) { aux->dato=d; if (cabeza ==NULL) { aux->sig=NULL; cabeza=aux; } else { aux->sig=cabeza; cabeza=aux; } } else printf("\nMemoria insuficiente"); } void eliminar() { if (cabeza!=NULL) { aux=cabeza; cabeza=aux->sig; printf("\nDato a eliminar: %d",aux->dato); free(aux); } else printf("\nLista vacia"); } void mostrar() { aux=cabeza; while(aux!=NULL) { printf("\n %d", aux->dato); aux=aux->sig; } } main () { int opc, d; cabeza=NULL; do { opc =menu(); getchar(); switch(opc) { case 1: printf("\nDa el dato: "); scanf("%d",&d); insertar(d); break; case 2: eliminar(); break; case 3: mostrar(); break; case 4: printf("\nSaliendo..."); break; default: printf("\nOPcion invalida"); break; } } while (opc!=4); }