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

al parecer nunca pides el numero de tel nuevo.

una forma de mejorar tu algoritmo de busqueda:

Código C++:
Ver original
  1. nodo_aux = *lista;
  2.     /* Comprueba si el elemento a borrar es el primero de la lista */
  3.     if(strcmp(nombre,nodo_aux->nombre)==0){
  4.        *lista=nodo_aux->siguiente; /* Ahora apunta al segundo de la lista */
  5.  
  6.        free(nodo_aux);} /* Libera la memoria ocupada por el nodo borrado */
  7.  
  8.     else{
  9.      nodo_anterior = nodo_aux;
  10.       nodo_aux = nodo_aux->siguiente;
  11.           }
  12.       while ((nodo_aux->siguiente != NULL) && (!encontrado)){
  13.         if(strcmp(nombre,nodo_aux->nombre) == 0) /* Iguales */
  14.            encontrado = 1;
  15.         else{
  16.            nodo_anterior = nodo_aux;
  17.            nodo_aux = nodo_aux->siguiente;
  18.         }
  19.       }
  20.       if((nodo_aux->siguiente == NULL) && (!encontrado))
  21.        if(strcmp(nombre,nodo_aux->nombre) == 0) /* Iguales */
  22.          encontrado = 1;
  23.       if(encontrado){
  24.         nodo_anterior->siguiente = nodo_aux->siguiente;
  25.         free(nodo_aux); /* Libera la memoria ocupada por el nodo borrado */
  26.       }

sería de esta forma

Código C++:
Ver original
  1. nodo_aux = lista;
  2.             while (strcmp(nombre, nodo_aux->nombre))
  3.             {
  4.                 nodo_anterior = nodo_aux;
  5.                 nodo_aux = nodo_aux->siguiente;
  6.                 if(nodo_aux == NULL)
  7.                     break;
  8.             }
  9.  
  10.             if(nodo_aux != NULL)//o if(!nodo_aux)
  11.             {
  12.                 if(nodo_aux == lista)
  13.                     lista = nodo_aux->siguiente;
  14.                 else
  15.                     nodo_anterior->siguiente = nodo_aux->siguiente;
  16.                 free(nodo_aux); /* Libera la memoria ocupada por el nodo borrado */
  17.             }

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