Hola, soy nuevo en el foro, recurrí porque no encuentro solución a mi problema por más que navegué e intenté por mi mismo y me siento un poco frustrado; les comento, estoy realizando una agenda que por el momento tiene las siguientes funciones: agregar, buscar, eliminar.
Actualmente todo me funciona de maravilla, excepto en eliminar, sólo logro que elimine el primero elemento, a partir del segundo en adelante me marca errores y me saca de la ejecución del programa, les adjunto el código, compilo en Borland.
Actualmente todo me funciona de maravilla, excepto en eliminar, sólo logro que elimine el primero elemento, a partir del segundo en adelante me marca errores y me saca de la ejecución del programa, les adjunto el código, compilo en Borland.
Código [Seleccionar]
int eliminar(){
agenda *temp = primero;
char pal_clave[100];
gets(bas); //variable para almacenar la tecla intro
printf("\n Dame el nombre completo de la persona a borrar: ");
gets(pal_clave);
//este ciclo recorre la agenda hasta encontrar el nombre
do{
//si la palabra clave a buscar coincide con el nombre
if(strcmp(pal_clave,temp->nombre) == 0){
//si es la primera en la lista
if (temp == primero){
//si no tiene registro en su campo siguiente
if(temp->sig== NULL){
primero = NULL;
ultimo = NULL;
free(temp);
}
else{
//si tiene registros en su campo siguiente, este se asigna al primero
primero=temp->sig;
primero->ant = NULL;
}
return true;
}
if(temp == ultimo){
ultimo = temp->ant;
ultimo -> sig = NULL;
free(temp);
return true;
}
temp->ant->sig=temp->sig;
temp->sig->ant = temp->ant;
//libero espacio en memoria del registro borrado
free(temp);
return true;
}
//avanza al siguiente en la lista
temp = temp->sig;
}
while(temp != NULL);
return false;
}