Descripción de las estructuras de datos desarrolladas - Sormocs/Proyecto_III_Datos_II GitHub Wiki

Lista doblemente enlazada

Se utilizó para almacenar con las direcciones de memoria de cada DiskNodo de la memoria luego de haber sido leído desde los parámetros del .XML

class ListDiskNode {

private:

    DiskNode* head;
    int size = 1;

public:

    ListDiskNode();
    void Add(std::string path);
    void DeleteNode(int i);

};

class DiskNode {

private:

    std::string path;
    ListPath *data = new ListPath();
    DiskNode* back;
    DiskNode* next;

public:

    DiskNode(std::string path);
    DiskNode* GetNext();
    DiskNode* GetBack();
    void SetBack(DiskNode* node);
    void SetNext(DiskNode* node);
    ListPath* GetData();
    void FillPath();

};

Lista Enlazada

Se utilizó para almacenar la dirección de cada archivo .txt desde de los disk nodos, para el uso de escritura y lectura de los datos.

class ListPath {

private:

    NodePath* head;
    int size;

public:

    ListPath();
    void AddFinal(std::string name, std::string path);

};

class NodePath {

private:

    std::string name;
    std::string path;

    NodePath* next;

public:

    NodePath(std::string name, std::string path);
    NodePath* GetNext();
    void SetNext(NodePath* node);

};


Vector

Se utilizó para el almacenamiento de los chars y los bitset<8> a la hora de la conversión de string a bytes y viceversa.

Heap (Arbol para el algoritmo de compresión Huffman)

Se forma un heap según las frecuencias de los caractéres del string que el algoritmo debe comprimir, sus nodos son structs que pueden contener ya sea la información de un caractér o más nodos según su posición en el árbol.

Listas Enlazadas SrtChar y HuffDict

Ambas contienen structs para los caracteres, con la diferencia de que StrChar guarda su frecuencia, mientras que la otra guarda el código que se debe seguir para encontrarlo en el árbol ya formado. Se comportan de igual manera con solo un insert al final y guardan su propio tamaño.

⚠️ **GitHub.com Fallback** ⚠️