Download - INSTITUTO TECNOLOGICO DE APIZACO
![Page 1: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/1.jpg)
INSTITUTO TECNOLOGICO DE APIZACO
LISTAS ENLAZADAS EQUIPO 1
![Page 2: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/2.jpg)
LISTAS ABIERTASLa forma más simple de estructura dinámica es la lista
abierta. En esta forma los nodos se organizan de modo
que cada uno apunta al siguiente, y el último no apunta a
nada, es decir, el puntero del nodo siguiente vale NULL.
En las listas abiertas existe un nodo especial: el primero.
Normalmente diremos que nuestra lista es un puntero a
ese primer nodo y llamaremos a ese nodo la cabeza de la
lista. Eso es porque mediante ese único puntero podemos
acceder a toda la lista.
![Page 3: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/3.jpg)
Insertar elementos en una lista abiertaInsertar un elemento en una lista vacía.Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la lista valdrá NULL:
Lista vacía
El proceso es muy simple, bastará con que: 1.- nodo->siguiente apunte a NULL 2.- Lista apunte a nodo.
![Page 4: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/4.jpg)
De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una lista, en este caso no vacía:
Insertado al principio
El proceso sigue siendo muy sencillo:
1.- Hacemos que nodo->siguiente apunte a Lista.
2.- Hacemos que Lista apunte a nodo
![Page 5: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/5.jpg)
INSERTAR UN ELEMENTO EN LA ÚLTIMA POSICIÓN DE UNA LISTA
Este es otro caso especial. Para este caso partiremos de una lista no vacía:
Insertar al final
![Page 6: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/6.jpg)
Eliminar elementos en una lista abierta
Eliminar el primer nodo de una lista abierta
Eliminar primer nodo
Es el caso más simple. Partiremos de una lista con uno o más nodos, y usaremos un puntero auxiliar, nodo:
1.-Hacemos que nodo apunte al primer elemento de la lista, es decir a Lista.
2.-Asignamos a Lista la dirección del segundo nodo de la lista: Lista->siguiente.
3.-Liberamos la memoria asignada al primer nodo, el que queremos eliminar.
![Page 7: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/7.jpg)
Primer nodo eliminado
Si la lista sólo tiene un nodo, el proceso es también válido, ya que el valor de Lista->siguiente es NULL, y después de eliminar el primer nodo la lista quedará vacía, y el valor de Lista será NULL.
De hecho, el proceso que se suele usar para borrar listas completas es eliminar el primer nodo hasta que la lista esté vacía.
![Page 8: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/8.jpg)
ELIMINAR UN NODO CUALQUIERA DE UNA LISTA ABIERTA
En todos los demás casos, eliminar un nodo se puede hacer siempre del mismo modo.
Supongamos que tenemos una lista con al menos dos elementos, y un puntero al nodo anterior al que queremos eliminar.
Eliminar un nodo
![Page 9: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/9.jpg)
LISTAS ENLAZADAS
la lista enlazada es un tda que nos permite almacenar datos de una forma organizada, al igual que los vectores pero, a diferencia de estos, esta estructura es dinámica, por lo que no tenemos que saber "a priori" los elementos que puede contener.
en una lista enlazada, cada elemento apunta al siguiente excepto el último que no tiene sucesor y el valor del enlace es null.
![Page 10: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/10.jpg)
ESQUEMA DE UN NODO Y UNA LISTA ENLAZADA
![Page 11: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/11.jpg)
LOS OPERADORES BÁSICOS DE UNA LISTA ENLAZADA SON:
Insertar: inserta un nodo con dato x en la lista, pudiendo realizarse esta inserción al principio o final de la lista o bien en orden
ELIMINAR: elimina un nodo de la lista, puede ser según la posición o por el dato.
![Page 12: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/12.jpg)
OPERADORES DE INSERCIÓN EN LISTAS ENLAZADAS
las funciones de inserción al principio de la lista, g_slist_prepend, y al final, g_slist_append, son sencillas de usar. sólo hay que pasarles como parámetros la lista donde queremos añadir el dato así como el dato a insertar y la función devuelve una lista con el nuevo dato insertado. la función g_slist_insert inserta el dato en la posición indicada
![Page 13: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/13.jpg)
OPERADORES DE ELIMINACIÓN EN LISTAS ENLAZADAS
las dos funciones expuestas para la eliminación de nodos, si bien tienen una definición prácticamente idéntica, el resultado obtenido es distinto. en el caso de g_slist_remove, se eliminará el nodo que contenga el valor data. si hay varios nodos con el mismo valor, sólo se eliminará el primero. si ningún nodo contiene ese valor, no se realiza ningún cambio en el gslist. en el caso de g_slist_remove_all, se eliminan todos los nodos de la lista que contengan el valor data y nos devuelve la nueva lista resultante de la eliminación de los nodos.
![Page 14: INSTITUTO TECNOLOGICO DE APIZACO](https://reader035.vdocuments.net/reader035/viewer/2022062518/568145d8550346895db2db0d/html5/thumbnails/14.jpg)
GRACIAS POR VER NUESTRA WIKI