Descripción de las estructuras de datos desarrolladas - Kenichih48/Proyecto-2-Datos-2 GitHub Wiki

Vectores

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.

Lista doblemente enlazada

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

Matrices

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;
}
⚠️ **GitHub.com Fallback** ⚠️