#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]