Repository navigation
4) Estructuras de datos desarrolladas
Se hizo uso de listas enlazadas, compuestas por nodos para el almacenamiento de cualquier tipo de dato, en la solución del proyecto se utilizaron para almacenar la información de los genes de cada individuo del algoritmo genetico y para almacenar posiciones bidimensionales y conjuntos de objetos.
Estas listas están basadas en el uso de punteros, y funcionan de la siguiente manera: La instancia de Lista contiene un puntero a el primer nodo. Luego cada nodo subsecuente contiene un puntero al siguiente nodo. Por lo cual, para agregar nuevos componentes (o para obtener alguno ya existente), se debe de recorrer **iterativamente **la lista hasta la posición buscada, si en algún momento se llega a un puntero nodo es porque se ha alcanzado el fin de la lista.
La presente implementación contiene también un método para eliminar un nodo de la lista, esto lo hace al reconectar el nodo anterior y el nodo siguiente, sin olvidar de tomar en cuenta los posibles casos excepcionales que podrían ocasionar fallos de memoria si no se les trata de manera adecuada.
En el proyecto, la estructura de datos de Matriz fue de gran utilidad, esto dado que se usaron varias de ellas para almacenar la información sobre las coordenadas del juego en el servidor. Se crearon matrices que sirven como aproximaciones al mapa implementado en Unity, y estas permiten ejecutar los algoritmos de pathfinding y así encontrar rutas optimas.
Una matriz es una estructura abstracta de manejo de datos bastante simple, corresponde a un arreglo bidimensional en donde se guardan datos indexados por sus posiciones en dichas dimensiones (generalmente denominadas ¨x¨ y ¨y¨). En el lenguaje de programación C++, y en cuanto al manejo de memoria, una matriz corresponde a un conjunto de varios conjuntos de direcciones de memoria contiguas. Debido a lo anterior, para poder pasar información sobre toda la matriz entre diferentes métodos se hace uso de un puntero doble, que indica la posición de memoria del puntero del primer array de la matriz, contiguamente se encuentran los demás punteros.
Una matriz tiene la ventaja de que es una estructura de datos estática , lo cual significa que siempre mantiene el mismo tamaño, y lo único que cambia son los valores de los elementos almacenados. Por esto, es de rápido acceso y suele ser más eficiente que otros modelos de manejos de datos.
