C# Clases autorreferenciadas

Una clase autorreferenciada es muy común para almacenar datos de forma dinámica y consumirlos a medida que los necesitamos en otro proceso, una clase autorreferenciada contiene un miembro de la clase que hace referencia a un objeto del mismo tipo. La unión de las clases referenciadas crea una lista de nodos que podemos recorrer accediendo de forma sucesiva desde el nodo raíz  al miembro del nodo que apunta al siguiente y así sucesivamente.

El ejemplo de abajo es como se organiza un array bidimensional en memoria, realmente se reservan zonas de memoria contiguas como en un array de una dimensión.

Frente a un array estático (los elementos se organizan en memoria de forma contigua y su tamaño se reserva en la declaración de la variable)  con un número de elementos determinados tiene una importante ventaja, una lista basada en nodos autoenlazados puede modificar su tamaño de forma dinámica en tiempo de ejecución (aunque también tiene un coste computacional que puede afectar al rendimiento de nuestro programa el manejo de grandes estructuras de memoria que reservan y liberan memoria según su necesidad).

El ejemplo de arriba es un ejemplo muy básico de un clase autorreferenciada, por supuesto los nodos pueden contener todos los datos que necesitemos de cualquier tipo.

Para ir añadiendo nuevos nodos durante la ejecución de nuestro programa haremos uso de la reserva de memoria dinámica con el operador new, este operador recibe como operando el tipo de objeto que se asignará de forma dinámica y devuelve una referencia a un objeto de este tipo.

Basándonos en esta arquitectura podemos crear listas enlazadas, colas o arboles. Cada tipo de estructura tiene propósitos diferentes y puede ser aplicado según el problema que debamos resolver.

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s