al parecer nunca pides el numero de tel nuevo.
una forma de mejorar tu algoritmo de busqueda:
Código C++:
Ver originalnodo_aux = *lista;
/* Comprueba si el elemento a borrar es el primero de la lista */
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;
}
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 */ }
sería de esta forma
Código C++:
Ver originalnodo_aux = lista;
while (strcmp(nombre
, nodo_aux
->nombre
)) {
nodo_anterior = nodo_aux;
nodo_aux = nodo_aux->siguiente;
if(nodo_aux == NULL)
break;
}
if(nodo_aux != NULL)//o if(!nodo_aux)
{
if(nodo_aux == lista)
lista = nodo_aux->siguiente;
else
nodo_anterior->siguiente = nodo_aux->siguiente;
free(nodo_aux
); /* Libera la memoria ocupada por el nodo borrado */ }
una variante interesante seria q en lugar de buscar por un nombre en concreto, los nombres los insertaras de forma alfabetica. asi no tendrias k pedir el nombre, que te parece