• Miércoles 20 de Noviembre de 2024, 16:26

Autor Tema:  Re: LISTAS DOBLEMENTE ENLAZADAS  (Leído 2378 veces)

gongi

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: LISTAS DOBLEMENTE ENLAZADAS
« en: Viernes 18 de Abril de 2003, 21:05 »
0
hola y gracias de antemano por este foro para los que empezamos. Espero poder ayudar algún día.
El código siguiente define una agenda mediante una lista simple. La lista añade o inserta los nodos por el criterio nombre, ya ordenados. En ella se usa un puntero a estructura (*anterior) que va guardando la dirección del nodo anterior, un puntero "auxiliar" para recorrido, intercambio, etc y un puntero nuevo para crear nodos mediante asignación dinámica de memoria. Por ejemplo si inserto un nodo, auxiliar se va trasladando  (auxiliar=auxiliar->siguiente) y anterior va guardando la posicion penultima de auxiliar (anterior = auxiliar).y se reorganizan los nodos haciendo un puente (anterior->siguiente=nuevo) y (nuevo->siguiente=auxiliar). Mi pregunta es: si creo una estructura con otro puntero que indique la direccion del nodo anterior, ademas del actual que indica el siguiente,

 struct _agenda {
   char nombre[20];
   char telefono[12];
   struct _agenda *siguiente;
   struct agenda * anterior;
};

Usando el mismo código o algoritmo para recorrer la lista (while anterior != NULL) y auxiliar = auxiliar->siguiente, veo que cuando encuentra la posición de insercion, con la asignación nuevo->siguiente= auxiliar  y  nuevo->anterior = auxiliar->anterior consigo que el nuevo elmento apunte al anterior y al siguiente, pero , como consigo que el puntero siguiente del nodo anterior apunte al nuevo nodo?. Me estoy equivocando al utilizar el mismo algoritmo que para la lista simple ?. MUchas gracias por vuestra ayuda.
 

/

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
LISTAS DOBLEMENTE ENLAZADAS
« Respuesta #1 en: Viernes 18 de Abril de 2003, 22:29 »
0
ummm,
bueno me gustaria que utilizaras las opciones para insertar codigo que trae el foro, o bien que adjuntaras el archivo de codigo fuente, ya que como te daras cuenta sale todo sin identar...si me ayudas con esto le echaer una ajoeada a tu programa.

Si enlazas hacia el nodo anterior , ya no son listas simples, sinolistas doblementa enlazadas,  estoy haciendo una aplicacion que maneja este tipo de listas, asi que hechale una ojeada al codigo que te anexo y a es te link:

http://pwp.007mundo.com/juank

http://juank-solocodigo.iespana.es

es un juego  que estoy haciendo, y trata de ordenamiento de listas doblemente enlazadas, aqui te adjunto un segmento de codigo que utilizo para leer los datros de un archivo, y al tiempo cargarlo en una lista doblemente enlazada, como te daras cuenta, leo del archivo, subo el dato a memoria, solicito memoria para un nuevo nodo de la lista , y asigno los datos, luego, enlazo la lista hacia adelante y hacia atras.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io