listas doblemente encadenadas

Download LISTAS DOBLEMENTE ENCADENADAS

Post on 01-Jul-2015

5.850 views

Category:

Education

0 download

Embed Size (px)

DESCRIPTION

Guía Práctica de Listas Doblemente Encadenadas. Hay ejemplos de como alimentar una lista; tanto a la izquierda como a la derecha del nodo principal.

TRANSCRIPT

  • 1. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas Las Listas doblemente encadenas tienen la siguiente estructura : nodo Nodo anterior Nodo siguiente Nodo dato
    • La estructura esta clasificada con tres elementos:
    • El tipo de Estructura se llama Nodo
    • Nodo anteriorhace referencia a la direccin de otro nodo
    • Nodo siguientehace referencia a la direccin de otro nodo
    • Nodo dato es la parte en donde se almacena informacin.

2. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas EJEMPLO C++: nodo Nodo anterior Nodo siguiente Nodo valor Pedir memoria para los nodos: Tenemos que definir una constante con el tipo de estructura para que nos reserve memoria dinmica #define Localizar = (struct *nodo) malloc (size(struct nodo) Struct nodo { intvalor; struct nodo *anterior, struct nodo*siguiente, }; Struct nodo*cab, *cola, *nuev o; 3. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas EJEMPLO C++: Primer Nodo: nuevo = Localizar Struct nodo { intvalor; struct nodo *anterior, struct nodo*siguiente, }; Struct nodo*cab, *cola, *nuevo;nuevo 001A Direccin de la Estructura 4. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas NULL EJEMPLO C++: Primer Nodo: nuevo = Localizar nuevo anterior= NULL; Struct nodo { intvalor; struct nodo *anterior, struct nodo*siguiente, }; Struct nodo*cab, *cola, *nuevo;nuevo nuevo anterior 001A Direccin de la Estructura 5. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas NULL NULL EJEMPLO C++: Primer Nodo: nuevo = Localizar nuevo anterior= NULL; nuevo siguiente = NULL; Struct nodo { intvalor; struct nodo *anterior, struct nodo*siguiente, }; Struct nodo*cab, *cola, *nuevo;nuevo nuevo anterior nuevo siguiente 001A Direccin de la Estructura 6. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 NULL NULL EJEMPLO C++: Primer Nodo: nuevo = Localizar nuevo anterior= NULL; nuevo siguiente = NULL; Cout > nuevo valor ;//supongamos que el usuario ingresa el Nmero 50 y Enter . Struct nodo { intvalor; struct nodo *anterior, struct nodo*siguiente, }; Struct nodo*cab, *cola, *nuevo;nuevo nuevo anterior nuevo siguiente nuevo valor 001A Direccin de la Estructura 7. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 NULL NULL EJEMPLO C++: Primer Nodo: nuevo = Localizar nuevo anterior= NULL; nuevo siguiente = NULL; Cout> nuevo valor; //supongamos que el usuario ingresa el Nmero 50 y Enter . cab = nuevo; Struct nodo { intvalor; struct nodo *anterior, struct nodo*siguiente, }; Struct nodo*cab, *cola, *nuevo;nuevo nuevo anterior nuevo siguiente nuevo valor 001A Direccin de la Estructura cab 8. UNIVERSIDAD ANTONIO NARI O Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 NULL NULL EJEMPLO C++: Primer Nodo: nuevo = Localizar nuevo anterior= NULL; nuevo siguiente = NULL; Cout > nuevo valor;//supongamos que el usuario ingresa el Nmero 50 y Enter . cab = nuevo; cola = nuevo; Struct nodo { intvalor; struct nodo *anterior, struct nodo*siguiente, }; Struct nodo*cab, *cola, *nuevo;nuevo nuevo anterior nuevo siguiente nuevo valor 001A Direccin de la Estructura cab cola 9. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas No ta: En las listas doblemente encadenas podemos adicionar nodos tanto ala derecha como a la izquierda. nodo Nodo anterior Nodo siguiente Nodo dato q q anterior q siguiente q valor q q anterior q siguiente q valor Alimentar a la Izquierda Alimentar a laDerecha nuevo cab cola Primer Nodo Ing. Heiver Cuesta Dvila 10. INICIO AGREGAR A LA IZQUIERDA 11. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null null No ta: Si desea alimentar nodos a la Izquierda la estructura se alimenta as: nodo Nodo anterior Nodo siguiente Nodo dato q q anterior q siguiente q valor Alimentar a la Izquierda nuevo cab cola Primer Nodo q = Localizar Ejemplo de ingreso a la Izquierda: Ing. Heiver Cuesta Dvila q 12. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null null No ta: Si desea alimentar nodos a la Izquierda la estructura se alimenta as: nodo Nodo anterior Nodo siguiente Nodo dato null q q anterior q siguiente q valor Alimentar a la Izquierda nuevo cab cola Primer Nodo q = Localizar q anterior = null; 001A 002A Ejemplo de ingreso a la Izquierda: q 13. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null null Nota: Si desea alimentar nodos a la Izquierda la estructura se alimenta as: nodo Nodo anterior Nodo siguiente Nodo dato null null q q anterior q siguiente q valor Alimentar a la Izquierda nuevo cab cola Primer Nodo q = Localizar q anterior = null; q siguiente = null; 001A 002A Ejemplo de ingreso a la Izquierda: q 14. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null null Nota: Si desea alimentar nodos a la Izquierda la estructura se alimenta as: nodo Nodo anterior Nodo siguiente Nodo dato 200 null null q q anterior q siguiente q valor Alimentar a la Izquierda nuevo cab cola Primer Nodo q = Localizar q anterior = null; q siguiente = null; Cout > q valor;//Dato ingresado 200 001A 002A Ejemplo de ingreso a la Izquierda: q 15. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null null Nota: Vamos a Proceder a Unirlos Dos Nodos as: nodo Nodo anterior Nodo siguiente Nodo dato 200 001A null q anterior q siguiente q valor Alimentar a la Izquierda nuevo cab cola Primer Nodo q = Localizar q anterior = null; q siguiente = null; Cout> q valor;//Dato ingresado 200 q siguiente = cab; 001A 002A Ejemplo de ingreso a la Izquierda: q 16. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null 002A Nota: Vamos a Proceder a Unir los Dos Nodos as: nodo Nodo anterior Nodo siguiente Nodo dato 200 001A null q q anterior q siguiente q valor Alimentar a la Izquierda nuevo cab cola Primer Nodo q = Localizar q anterior = null; q siguiente = null; Cout> q valor;//Dato ingresado 200 q siguiente = cab; cab anterior = q; 001A 002A Ejemplo de ingreso a la Izquierda: 17. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null 002A No ta: Ahora corremos la cabeceraal nuevo Nodo: nodo Nodo anterior Nodo siguiente Nodo dato 200 001A null q q anterior q siguiente q valor Alimentar a la Izquierda nuevo cab cola Primer Nodo q = Localizar q anterior = null; q siguiente = null; Cout > q valor;//Dato ingresado 200 q siguiente = cab; cab anterior = q; cab = q; 001A 002A Ejemplo de ingreso a la Izquierda: 18. FIN AGREGAR A LA IZQUIERDA 19. INICIO AGREGAR A LA DERECHA 20. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null null Nota: Si desea alimentar nodos a la Derecha de la estructura se alimenta as: nodo Nodo anterior Nodo siguiente Nodo dato q q anterior q siguiente q valor Alimentar a la Derecha nuevo cola Primer Nodo q = Localizar Ejemplo de ingreso a la Derecha: 21. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null null Nota: Si desea alimentar nodos a laDerecha de la estructura se alimenta as: nodo Nodo anterior Nodo siguiente Nodo dato null q q anterior q siguiente q valor Alimentar a la Derecha nuevo cola Primer Nodo q = Localizar q anterior = null; 001A 003b Ejemplo de ingreso a la Derecha: 22. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null null Nota: Si desea alimentar nodos a la Derechala estructura se alimenta as: nodo Nodo anterior Nodo siguiente Nodo dato null null q q anterior q siguiente q valor Alimentar a la Izquierda nuevo cola Primer Nodo q = Localizar q anterior = null; q siguiente = null; 001A 003b Ejemplo de ingreso a la Derecha 23. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null null Nota: Si desea alimentar nodos a la Derecha de la estructura se alimenta as: nodo Nodo anterior Nodo siguiente Nodo dato 400 null null q q anterior q siguiente q valor Alimentar a la Izquierda nuevo cola Primer Nodo q = Localizar q anterior = null; q siguiente = null; Cout > q valor;//Dato ingresado 400 001A 003b Ejemplo de ingreso a la Izquierda: 24. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 null null Nota: Vamos a Proceder a Unir los Dos Nodos as: nodo Nodo anterior Nodo siguiente Nodo dato 400 NULL 001A q q anterior q siguiente q valor Alimentar a la Izquierda nuevo cola Primer Nodo q = Localizar q anterior = null; q siguiente = null; Cout > q valor;//Dato ingresado 200 q anterior = cola; 001A 003b Ejemplo de ingreso a la Derecha: 25. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 003b oo2a Nota: Vamos a Proceder a Unir los Dos Nodos as: nodo Nodo anterior Nodo siguiente Nodo dato 400 NULL 001A q q anterior q siguiente q valor Alimentar a la Izquierda nuevo cola Primer Nodo q = Localizar q anterior = null; q siguiente = null; cout > q valor;//Dato ingresado 400 q anterior = cola; cola siguiente = q; 001A 003b Ejemplo de ingreso a la Derecha: 26. UNIVERSIDAD ANTONIO NARIO Estructuras de Datos Tema: Listas Doblemente Encadenadas 50 003b oo2a Nota: Ahora corremos la cola al nuevo nodo as: nodo Nodo anterior Nodo siguiente Nodo dato 400 NULL 001A q q anterior q siguiente q valor Alimentar a la Izquierda nuevo cola Primer Nodo q = Localizar q anterior = null; q siguiente = null; Cout > q valor;//Dato ingresado 200 q anterior = cola; cola siguiente = q; cola = q;001A 003b Ejemplo de ingreso