• Domingo 28 de Abril de 2024, 21:45

Autor Tema:  Listas Dinámicas.  (Leído 1131 veces)

alexancoC++

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Listas Dinámicas.
« en: Martes 15 de Mayo de 2007, 11:46 »
0
Hola, tengo una consultilla sobre listas dinámicas.

Tengo la siguiente estructura:

Código: Text
  1.  
  2. struct TNodo
  3. {
  4.   char Nombre[35];
  5.   char Telefono[9];
  6.   char Ciudad[20];
  7.   char Calle[35];
  8.   char Codigo[5];
  9.   TNodeLlista *Siguiente;
  10. };
  11.  
  12.  

Tengo que crear una función que permita añadir un nuevo nodo con la información de la estructura. Pero la lista tiene que estar ordenada alfabeticamente por el nombre.
Hice la función añadir con la función "new":
Código: Text
  1.  
  2. void afegir(TNodo *aux)
  3. {
  4.   if(!(aux=new TNodo))
  5.   {
  6.     printf("Espacio insuficiente!\n");
  7.   }
  8.   else
  9.   {
  10.     scanf("%d",&aux->TNodo);
  11.     printf("Nombre persona?\n");
  12.     scanf("%c",&TNodo->Nombre);
  13.     printf("Telefono?\n");
  14.     scanf("%c",&TNodo->Telefono);
  15.     printf("A que ciudad vive?\n");
  16.     scanf("%c",&TNodo->Ciudad);
  17.     printf("Calle?\n");
  18.     scanf("%c",&TNodo->Calle);
  19.     printf("Codigo?\n");
  20.     scanf("%c",TNodo->Codigo);
  21.   }
  22.  
  23.  
Sería correcto para añadir un nuevo nodo? Como sería para ordenarlo alfabeticamente por el nombre?

Muchas gracias, saludos.

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Listas Dinámicas.
« Respuesta #1 en: Martes 15 de Mayo de 2007, 16:41 »
0
pues no :

para añadir un nodo a una lista dinamica (por ejemplo simplemente ligada):

paso a) recorrer la lista desde first hasta que encontremos el pto de insercion comparando los elementos segun el Comparator o el criterio comparador

paso b ) una vez encontrado el punto que cumple el criterio comparado, insertar un nodo en ese pto. para ello segun el tipo de ligadura:
                         si hay anterior vincular el elemento anterior al nuevo
                         si hay posterior vincular el siguiente al nuevo

paso c) beneficios  :lol:

en el caso que has puesto no haces nada, solo creas un nuevo elemento TNodo y lo rellenas, pero no lo vinculas a la lista dinamica o TAD de turno.

bye