- #include<stdio.h> 
- #include<stdlib.h> 
- #include<conio.h> 
-   
- typedef struct nodo{ 
-     char clave[5]; 
-     char nombre[20]; 
-     char apellido[20]; 
-     char edad[5]; 
-     char modelo_arma[20]; 
-     char serial_arma[5]; 
-     struct nodo *sig; 
-     } LISTA ; 
-   
- LISTA *inicio; 
-   
- void ingresar(void), guardar(void); 
- void cargar(void), imprimir(void), mostrar(LISTA *info); 
- void eliminar(LISTA **inicio), insertar(LISTA *nuevo, LISTA **inicio); 
- char menu(void); 
- char menu1(void); 
- char menu2(void); 
-   
- void main(void){ 
-      clrscr(); 
-      inicio=NULL; 
-      cargar(); 
-      char ver,ver2; 
-      while(ver!='4') 
-      { 
-       fflush(stdin); 
-       ver=menu(); 
-       switch(ver) 
-       { 
-       case '1': ver2='R'; 
-         while(ver2!='4') 
-         { 
-         fflush(stdin); 
-         ver2=menu1(); 
-         switch(ver2) 
-         { 
-         case '1': ingresar(); break; 
-         case '2': eliminar(&inicio); break; 
-         case '3': imprimir(); break; 
-         case '4': clrscr(); break;  //Salida 
-         } 
-         } break; 
-       case '2': ver2=1; 
-         while(ver2!='4') 
-         { 
-         fflush(stdin); 
-         ver2=menu2(); 
-         switch(ver2) 
-         { 
-         case '1': clrscr(); //Busqueda Binaria 
-         case '2': clrscr(); //Busqueda Lineal 
-         case '4': clrscr(); //Salida 
-         } 
-         } break; 
-       case '4': clrscr(); break;  //Salida 
-       } 
-       } 
-      guardar(); 
- } 
-   
- void cargar(void){ 
-      LISTA *info; 
-      FILE *fp; 
-   
-      fp=fopen("pro2000.txt","r"); 
-      if(fp==NULL){ 
-     printf("No se puede abrir el archivon"); 
-     return; 
-     } 
-      inicio=NULL; 
-   
-      while(!feof(fp)){ 
-      info=(LISTA *) malloc(sizeof(LISTA)); 
-      if(info==NULL){ 
-         printf("No hay memorian"); 
-         return; 
-         } 
-   
-      if(fread(info, sizeof(LISTA), 1, fp)!=1) break; 
-      insertar(info, &inicio); 
-      } 
-  fclose(fp); 
- } 
-   
- void guardar(void){ 
-      LISTA *info; 
-      FILE *fp; 
-   
-      fp=fopen("pro2000.txt","w"); 
-      if(fp==NULL){ 
-     printf("No se puede abrir el archivon"); 
-     exit(1); 
-     } 
-   
-      info=inicio; 
-      while(info!=NULL){ 
-       fwrite(info, sizeof(LISTA), 1, fp); 
-       info=info->sig; 
-       } 
-      fclose(fp); 
- } 
-   
- void imprimir(void){ 
-      LISTA *info; 
-      info=inicio; 
-   
-      while(info!=NULL){ 
-       mostrar(info); 
-       info=info->sig; 
-       } 
-      printf("n"); 
- } 
-   
- void mostrar(LISTA *info){ 
-       clrscr(); 
-       printf("nLista de clientesn"); 
-       printf("nClave: %sn", info->clave); 
-       printf("Nombre: %sn", info->nombre); 
-       printf("Apellido: %sn", info->apellido); 
-       printf("Edad: %sn", info->edad); 
-       printf("Modelo del arma: %sn", info->modelo_arma); 
-       printf("Serial del arma: %sn", info->serial_arma); 
-   
-      } 
-   
- void eliminar(LISTA **inicio){ 
-      LISTA *anterior, *actual, *temp; 
-      char elemento[5]; 
-      clrscr(); 
-   
-      if(*inicio==NULL){ 
-     printf("No hay registrosnn"); return; } 
-   
-      printf("Ingrese dato a eliminar: "); gets(elemento); 
-   
-      if(atoi(elemento)==atoi((*inicio)->clave)){ 
-     temp=*inicio; 
-     *inicio=(*inicio)->sig; 
-     free(temp); } 
-   
-      else{ 
-     anterior=*inicio; 
-     actual=(*inicio)->sig; 
-   
-     while(actual!=NULL && atoi(elemento) != atoi(actual->clave)){ 
-           anterior=actual; 
-           actual=actual->sig; 
-           } 
-   
-     if(actual!=NULL){ 
-        temp=actual; 
-        anterior->sig=actual->sig; 
-        free(temp); } 
-   
-     else{ printf("El elemento no existenn"); return; } 
-   
-     } 
-     printf("El elemento ha sido eliminadonn"); 
- } 
-   
- void ingresar(void){ 
-      LISTA *info; 
-      info=(LISTA *) malloc(sizeof(LISTA)); 
-      clrscr(); 
-   
-      if(info==NULL){ 
-     printf("nNo hay memorian"); return; } 
-   
-      printf("Ingrese Clave: "); gets(info->clave); 
-      printf("Ingrese Nombre: "); gets(info->nombre); 
-      printf("Ingrese Apellido: "); gets(info->apellido); 
-      printf("Ingrese Edad: "); gets(info->edad); 
-      printf("Ingrese modelo del arma: "); gets(info->modelo_arma); 
-      printf("Ingrese serial del arma: "); gets(info->serial_arma); 
-      insertar(info, &inicio); 
-      printf("n"); 
- } 
-   
- void insertar(LISTA *nuevo, LISTA **inicio){ 
-      LISTA *anterior, *actual; 
-      anterior=NULL; 
-      actual=*inicio; 
-   
-      while(actual!=NULL && atoi(nuevo->clave) > atoi(actual->clave)){ 
-        anterior=actual; 
-        actual=actual->sig; 
-        } 
-   
-      if(anterior==NULL){ 
-     nuevo->sig=*inicio; 
-     *inicio=nuevo; 
-     } 
-   
-      else{ 
-        anterior->sig=nuevo; 
-        nuevo->sig=actual; 
-        } 
- } 
-   
- char menu(void){ 
-      char c; 
-      clrscr(); 
-      printf("nnttt***MENU PRINCIPAL***"); 
-      printf("nt(1) Altas, Bajas y Ver lista nt(2) Busqueda Binaria y Busqueda Lineal nt(4) Salirn"); 
-      printf("ntSeleccion: "); 
-      c=getche(); 
-      printf("n"); 
-      return(c); 
-      } 
-   
- char menu1(void){ 
-      char c; 
-      clrscr(); 
-      printf("nnttt***Altas, Bajas y Ver lista***"); 
-      printf("nt(1) Ingresar nt(2) Eliminar nt(3) Mostrar lista nt(4) Salirn"); 
-      printf("ntSeleccion: "); 
-      c=getche(); 
-      printf("n"); 
-      return(c); 
-      } 
-   
- char menu2(void){ 
-      char c; 
-      clrscr(); 
-      printf("nnttt***Busqueda***"); 
-      printf("nt(1) Busqueda Binaria nt(2) Busqueda Lineal  nt(4) Salirn"); 
-      printf("ntSeleccion: "); 
-      c=getche(); 
-      printf("n"); 
-      return(c); 
-      }[code]