1. Esta parte de código, si bien no kieres utilizar mi sugerencia de codigo, este el porque te marca error
if(strcmp(nombre,nodo_aux->nombre)==0){
*lista=nodo_aux->siguiente; /* Ahora apunta al segundo de la lista */
free(nodo_aux);} /* Libera la memoria ocupada por el nodo borrado */
else{
nodo_anterior = nodo_aux;
nodo_aux = nodo_aux->siguiente;}
//quita esta llave de aquí
while ((nodo_aux->siguiente != NULL) && (!encontrado)){
if(strcmp(nombre,nodo_aux->nombre) == 0) /* Iguales */
encontrado = 1;
else{
nodo_anterior = nodo_aux;
nodo_aux = nodo_aux->siguiente;
}
}
if((nodo_aux->siguiente == NULL) && (!encontrado))
if(strcmp(nombre,nodo_aux->nombre) == 0) /* Iguales */
encontrado = 1;
if(encontrado){
nodo_anterior->siguiente = nodo_aux->siguiente;
free(nodo_aux); /* Libera la memoria ocupada por el nodo borrado */
}
}
//deberia estar aquí
debes observar que al realizar la busqueda por telefon tienes el mismo error.
por otra parte, no entiendo por que pides tanto el nombre como el numero de telefono. Con solo pedir el nombre basta para borrar un nodo. Ahora si lo que quieres es que para borrar un nodo necesitas que coicida tanto el nombre como el telefono , entoces en este if
debes tambien comparar si el telefono es igual. En este caso ya no sería neceserio el segundo proceso de busqueda.
2. Cuando insertas al incio, debes verificar si el primer elemento de la lista si es asi, su puntero a siguiente debe apuntar a NULL.