Ver Mensaje Individual
  #9 (permalink)  
Antiguo 20/05/2010, 17:06
margarito04
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: crear una lista enlazada

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

Código C++:
Ver original
  1. if(strcmp(nombre,nodo_aux->nombre) == 0) /* Iguales */

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.