• No se han encontrado resultados

Listas Enlazadas

In document Libro_Guia_en_Espa_ol.pdf (página 87-90)

Una lista enlazada es una colección de nodos ordenados de forma que cada nodo contiene un enlace al siguiente nodo en la secuencia.

Tome Nota

Una versión generic de la clase Stack está disponible como parte del espacio de nombres de System. Collections.Generic. Esta versión genérica es utilizada para crear una pila de ítems que son del mismo tipo de datos.

ETC IBEROÁMERICA

Una lista enlazada es una colección de nodos de tal manera que cada nodo contiene una referencia (o enlace) al siguiente nodo en la secuencia. A diferencia de un arreglo, los ítems en una lista enlazada no necesitan ser contiguos y por lo tanto una lista enlazada no requiere de reubicación de espacio en memoria para la lista entera cuando se necesita agregar más ítems.

Representación Interna

En memoria, una lista enlazada puede ser visualizada como una colección de nodos, como se muestra en la Figura 3-4.

Cada nodo contiene dos piezas de información: los datos correspondientes al nodo y el enlace al siguiente nodo. El primer nodo de la lista es llamado el nodo encabezado. Utilizando el enlace del nodo encabezado, puede llegar al siguiente nodo y continuar atravesando nodos hasta que el enlace fnal es un valor null. A menudo el termino cola es utilizado para referirse a la lista apuntada por el nodo encabezado, la cola es todo lo demás después del nodo encabezado. En la Figura 3-4, la cola es la lista enlazada iniciando desde el nodo B.

Algunas otras implementaciones de listas enlazadas pueden ser utilizadas dependiendo de los requerimientos. En una lista enlazada circular, el último nodo es la lista apuntando de regreso al primer nodo para crear un círculo. En una lista doblemente enlazada, cada nodo contiene dos enlaces, como se muestra en la Figura 3-5.

Un enlace es una referencia de dirección que apunta al siguiente nodo en la secuencia y el otro enlace es una referencia hacia atrás que apunta de regreso al nodo previo en la secuencia. Como puede imaginar, una lista doblemente enlazada es fácil de atravesar en cualquier dirección.

El .NET Framework proporciona una clase LinkedList como parte del espacio de nombres de System.Collections.Generic. Esta clase implementa homogéneamente una lista doblemente enlazada de un tipo de datos específco. Puede escribir sus propias clases para implementar un diferente tipo de implementación de lista enlazada.

Figura 3-4

Representación interna de una estructura de datos de una lista enlazada sencilla

Figura 3-5

Representación de una estructura de datos de una lista doblemente enlazada

ETC IBEROÁMERICA

Operaciones Comunes

Una lista enlazada soporta las siguientes operaciones comunes:

Add: Agregar o insertar un ítem en una lista enlazada es un asunto de cambiar enlaces, como se muestra en la Figura 3-6. Digamos que le gustaría insertar un nuevo nodo (con valor Z) entre los nodos con valores A y B. primero necesita asignar memoria para el nuevo nodo y asignar el valor Z a la sección de datos del nodo. Luego, copiara la sección de enlace del nodo A a la sección de enlace del nodo Z de modo que el nodo Z está apuntando al nodo B. Finalmente, necesitará copiar la dirección del nodo Z recién creado a la sección de enlace del nodo A de manera que el nodo A inicia apuntando al nodo Z.

Remove: Similar a la operación add, la operación de remove o delete es también asunto de cambiar enlaces. Por ejemplo, para eliminar el tercer nodo en la Figura 3-4, cambiará el enlace del Segundo nodo a un valor null. El tercer nodo ahora será una pieza de memoria sin referencia y eventualmente será retornada al pool de memoria disponible.

Find: Esta operación encuentra un nodo con un valor dado en la lista enlazada. Para encontrar un valor, generalmente inicia desde el nodo encabezado y verifca si el valor coincide. Si no, seguirá el enlace al siguiente nodo y continuará la operación fnd hasta que alcance el fnal de la lista, lo cual sucede cuando encuentra un enlace null.

Rendimiento y Uso

Una lista enlazada no permite acceso aleatorio a sus ítems. La única manera de llegar a un ítem es iniciar desde el nodo encabezado y seguir los enlaces. Como resultado, las listas enlazadas son muy lentas en la recuperación de datos. Sin embargo, para operaciones de insertar y eliminar, las listas enlazadas son extremadamente rápidas: la inserción o eliminación de un nodo involucra solo cambiar un link. Además las listas enlazadas no tienen una capacidad máxima después de la cual el contenido necesita ser reasignado. De hecho, una lista enlazada proporciona una manera alternativa para implementar las estructuras de datos de la cola y la pila. Si sus requerimientos realizan accesos frecuentes a datos pero rara vez necesita insertar o eliminar datos, un arreglo es la implementación ideal. Si en su lugar, los requerimientos llaman con frecuencia operaciones de insert y delete, entonces puede ser más recomendable utilizar una lista enlazada.

Figura 3-6

Agregando un nuevo nodo a una lista enlazada

;¿Listo para la certificación? ¿Comprende las estructuras de datos comunes? — USD 3.2

ETC IBEROÁMERICA

www.pdftron.com

In document Libro_Guia_en_Espa_ol.pdf (página 87-90)