Soy nuevo en el manejo de las listas. Y estoy haciendo todo lo posible xD
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct consulta{
float peso;
char serialvacuna[25];
char tipovacuna[25];
char diagnostico[250];
char observaciones[250];
char fecha[10];
struct consulta *sig;
}NODOCONSULTA;
typedef struct mascota{
char nombre[20];
char animal[20];
char nacimiento[10];
char sexo[10];
char raza[20];//Solo si es perro o gato
char color[20];//Solo si es perro o gato
NODOCONSULTA *historialmedico;
struct mascota *sig;
}NODOMASCOTA;
typedef struct cliente{
char nombre[50];
char direccion[100];
double cedula;
char telefono[15];
NODOMASCOTA *listamascotas;
struct cliente *sig;
}NODOCLIENTE;
NODOMASCOTA* crearNodoMascota(){
NODOMASCOTA *nuevo;
nuevo
=(NODOMASCOTA
*)malloc(sizeof(NODOMASCOTA
)); if(nuevo){
strcpy(nuevo
->nacimiento
, "\0"); nuevo->sig=NULL;
}
return nuevo;
}
NODOCONSULTA* crearNodoConsulta(){
NODOCONSULTA *nuevo;
nuevo
=(NODOCONSULTA
*)malloc(sizeof(NODOCONSULTA
)); if(nuevo){
nuevo->peso=0;
strcpy(nuevo
->serialvacuna
, "\0"); strcpy(nuevo
->tipovacuna
, "\0"); strcpy(nuevo
->diagnostico
, "\0"); strcpy(nuevo
->observaciones
, "\0"); nuevo->sig=NULL;
}
return nuevo;
}
NODOCLIENTE* crearNodoCliente(){
NODOCLIENTE *nuevo;
nuevo
=(NODOCLIENTE
*)malloc(sizeof(NODOCLIENTE
)); if(nuevo){
strcpy(nuevo
->direccion
, "\0"); strcpy(nuevo
->telefono
, "\0"); nuevo->cedula=0;
nuevo->sig=NULL;
}
return nuevo;
}
NODOCLIENTE* IniciarLista(){
NODOCLIENTE *nuevo;
nuevo=crearNodoCliente();
nuevo->listamascotas=crearNodoMascota();
nuevo->listamascotas->historialmedico=crearNodoConsulta();
return nuevo;
}
void addcliente(NODOCLIENTE **ListaClientes){
NODOCLIENTE* Nuevo=crearNodoCliente();
NODOCLIENTE* aux=(*ListaClientes);
while(aux->sig!=NULL){
aux=aux->sig;
}
printf("Ingrese nombre del cliente: "); printf("Ingrese direccion de hogar: "); printf("Ingrese cedula del cliente (Sin Puntos ni Espacios): "); scanf("%ld",&Nuevo
->cedula
); printf("Ingrese telefono del cliente (Ej: 04161234567): "); Nuevo->sig=NULL;
aux->sig=Nuevo;
}
void mostrarclientes (NODOCLIENTE *Clientes){
NODOCLIENTE *aux;
aux=crearNodoCliente();
*aux=*Clientes;
do{
aux=aux->sig;
}while(aux->sig!=NULL);
}
void addmascota(NODOCLIENTE **ListaClientes){
NODOCLIENTE *busqueda;
busqueda=crearNodoCliente();
*busqueda=**ListaClientes;
mostrarclientes(busqueda);
int encontrado=0; //Bandera que indica si se encontro el usuario
double cedauxiliar=0; //Cedule que ingrese el usuario para buscar
printf("Ingrese la cedula del due%co de la mascota(Sin Puntos ni Espacios): ",164); scanf("%ld",&cedauxiliar
); while(busqueda!=NULL){
if(cedauxiliar==busqueda->cedula){
encontrado=1;
break;
}
busqueda=busqueda->sig;
}
if(encontrado==1){
NODOMASCOTA *aux; //En esta linea me da un error
aux=busqueda->listamascotas;
if(aux=NULL){
aux=crearNodoMascota();
}
NODOMASCOTA* Nuevo=crearNodoMascota();
while(aux->sig){
aux=aux->sig;
}
printf("Ingrese nombre de la mascota: "); printf("Ingrese que animal es: "); printf("Ingrese fecha de nacimiento(DD/MM/AAAA): "); printf("Ingrese su sexo (M/F): "); printf("Ingrese color del animal: "); aux->historialmedico=crearNodoConsulta();
Nuevo->sig=NULL;
aux->sig=Nuevo;
}else{
printf("No se encontro el cliente.\n"); }
}
int main(){
NODOCLIENTE *ListaClients;
ListaClients=IniciarLista();
addcliente(&ListaClients);
addcliente(&ListaClients);
addmascota(&ListaClients);
return 1;
}
En mi funcion addmascota, el programa se me cierra cuando se logra encontrar la cedula del dueño de la mascota.