Listas enlazadas doble exposicion
Transcript of Listas enlazadas doble exposicion
![Page 1: Listas enlazadas doble exposicion](https://reader035.fdocuments.mx/reader035/viewer/2022081200/5592ecb91a28ab67408b4714/html5/thumbnails/1.jpg)
LISTAS DOBLEMENTE ENLAZADAS O LISTAS
ENLAZADAS DE DOS VÍAS
![Page 2: Listas enlazadas doble exposicion](https://reader035.fdocuments.mx/reader035/viewer/2022081200/5592ecb91a28ab67408b4714/html5/thumbnails/2.jpg)
ALGORITMO Y ESTRUCTURA DE DATOS
José Carlos Urbina Martínez José Carlos Morales Raúl Leonardo Jorda Otero Marco Valentis
![Page 3: Listas enlazadas doble exposicion](https://reader035.fdocuments.mx/reader035/viewer/2022081200/5592ecb91a28ab67408b4714/html5/thumbnails/3.jpg)
DEFINICIÓN
Es una lista enlazada pero mas superior. Cada nodo tiene dos
enlaces: uno apunta al nodo anterior, o apunta al valor NULL si es el primer
nodo; y otro que apunta al nodo siguiente, o apunta al valor NULL si
es el último nodo.
![Page 4: Listas enlazadas doble exposicion](https://reader035.fdocuments.mx/reader035/viewer/2022081200/5592ecb91a28ab67408b4714/html5/thumbnails/4.jpg)
IMPORTANCIA Nos permite almacenar datos de una forma organiza.
Es una estructura TDA dinámica
Cada nodo de la lista doblemente enlazada contiene dos punteros, de forma que uno apunta al siguiente nodo y el otro al predecesor, permitiendo que se pueda recorrer la lista en ambos sentidos.
![Page 5: Listas enlazadas doble exposicion](https://reader035.fdocuments.mx/reader035/viewer/2022081200/5592ecb91a28ab67408b4714/html5/thumbnails/5.jpg)
APLICACIÓN
Una gran manera de representar a una baraja de cartas en un juego.
Un árbol de pila, tabla hash, y binario se puede implementar utilizando una lista Doblemente enlazada.
![Page 6: Listas enlazadas doble exposicion](https://reader035.fdocuments.mx/reader035/viewer/2022081200/5592ecb91a28ab67408b4714/html5/thumbnails/6.jpg)
ESTRUCTURA LÓGICA void Insertar(Lista *lista, int v) \{ pNodo nuevo, actual; /* Crear un nodo nuevo */ nuevo = (pNodo)malloc(sizeof(tipoNodo)); nuevo->valor = v; /* Colocamos actual en la primera posición de la lista */ actual = *lista; if(actual) while(actual->anterior) actual = actual->anterior; /* Si la lista está vacía o el primer miembro es mayor que el nuevo */ if(!actual || actual->valor > v) \{ /* Añadimos la lista a continuación del nuevo nodo */ nuevo->siguiente = actual; nuevo->anterior = NULL; if(actual) actual->anterior = nuevo; if(!*lista) *lista = nuevo; } else \{ /* Avanzamos hasta el último elemento o hasta que el siguiente tenga un valor mayor que v */ while(actual->siguiente &&actual->siguiente->valor <= v) actual = actual->siguiente; /* Insertamos el nuevo nodo después del nodo anterior */ nuevo->siguiente = actual->siguiente; actual->siguiente = nuevo; nuevo->anterior = actual; if(nuevo->siguiente) nuevo->siguiente->anterior = nuevo; }}
![Page 7: Listas enlazadas doble exposicion](https://reader035.fdocuments.mx/reader035/viewer/2022081200/5592ecb91a28ab67408b4714/html5/thumbnails/7.jpg)
ESTRUCTURA GRAFICA
![Page 8: Listas enlazadas doble exposicion](https://reader035.fdocuments.mx/reader035/viewer/2022081200/5592ecb91a28ab67408b4714/html5/thumbnails/8.jpg)
OPERACIONES Insertar un elemento en la primera posición de la listanodo->siguiente debe apuntar a Lista.nodo->anterior apuntará a Lista->anterior.Lista->anterior debe apuntar a nodo. Insertar un elemento en la última posición de la listanodo->siguiente debe apuntar a Lista->siguiente (NULL).Lista->siguiente debe apuntar a nodo.nodo->anterior apuntará a Lista. Insertar un elemento a continuación de un nodo cualquiera de una listaHacemos que nodo->siguiente apunte a lista->siguiente.Hacemos que Lista->siguiente apunte a nodo.Hacemos que nodo->anterior apunte a lista.Hacemos que nodo->siguiente->anterior apunte a nodo.
![Page 9: Listas enlazadas doble exposicion](https://reader035.fdocuments.mx/reader035/viewer/2022081200/5592ecb91a28ab67408b4714/html5/thumbnails/9.jpg)
OPERACIONES void borrar (posicion p){if (p->anterior != NULL)
p->anterior->siguiente = p->siguiente;if (p->siguiente != NULL)
p->siguiente->anterior = p->anterior;free(p);}
![Page 10: Listas enlazadas doble exposicion](https://reader035.fdocuments.mx/reader035/viewer/2022081200/5592ecb91a28ab67408b4714/html5/thumbnails/10.jpg)
GRACIAS POR SU ATENCIÓN!!!
Ingenios Ingeniados