Descripción de las estructuras de datos desarrolladas - Kenichih48/Proyecto-2-Datos-2 GitHub Wiki
Se hace uso de la estructura predefenida en c++ llamada vector para almacenar valores bajo una misma variable y realizar operaciones con esta, en un vector todos los valores almacenados deben ser del mismo tipo. Ejemplo:
#include <vector>
vector <int> listDividers;
...
En donde se almacenaban y accesaban todos las variables necesarias para poder armar la matriz de la imagen en el Genetic Puzzle, poder aleatorizar la piezas de la matriz y que la imagen quedara distorsionada para poder aplicar el algoritmo genetico y organizar las piezas.
Se crea una estructura de datos de una lista doblemente enlazada para guardar las informaciones de las diferentes generaciones en nodos y poder avanzar y retroceder en dicha lista.
template <class T>
class List
{
public:
List();
~List();
void addData(T);
void delAll();
void delData(T);
void print();
int getSize();
T getDataPos(int);
Node<T>* getHead();
private:
Node<T> *head;
int numNodes;
};
template <class T>
class Node
{
public:
Node();
Node(T);
~Node();
Node *next;
T data;
void delAll();
void print();
};
...
La informacion almacenada en los nodos de la lista doblemente enlazada fue utilizada, en el caso del Genetic Puzzle, para tener control de todas las generaciones y su requerida informacion como lista de fitness y lista de posiciones de las imagenes, lista de mutaciones, entre otras
Las matrices se utilizaron en varias ocasiones. La primera de estas fue como una representiación del mapa y sus jugadores, para lo cual se implementó una lista doblemente enlazada que guardara objetos con la información de cada casilla (si es un jugador, informacion para los algoritmos, entre otros) y otra que guardara listas y segundo se utilizo para en el Genetic Puzzle para guardar la informacion y posicion de las piezas asi como para poder desplegar las piezas en pantalla. Estas se pueden ver a continuación:
class List{
public:
Node* head;
void append(string new_name, int new_memory, int new_offset, int new_count, bool new_mark, int new_references) {}
}
class MatrixNode{
private:
List* element;
MatrixNode* next;
MatrixNode* last;
}
class Matrix{
private:
MatrixNode* tail = NULL;
MatrixNode* head = NULL;
int length = 0;
}