Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - IrvWinchester

#1
Gracias, sirvió de maravilla! Era algo que estaba pasando por alto!
#2
Programación C/C++ / Urgente apuntadores
3 Agosto 2017, 11:10 AM
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.


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;
}