PI-ITBA / 2024_01

9 stars 0 forks source link

Diferencia entre estructura planteada y una dada por la catedra #383

Closed JuaniRaggio closed 1 week ago

JuaniRaggio commented 1 week ago

Lo que se pedia: Se desea implementar un TAD para listas de elementos no repetidos, que permita recorrerla con dos criterios: en forma ascendente o por el orden de inserción de los elementos. Se me ocurrio hacer una lista que este ordenada ascendentemente y a la vez tener un vector que guarde los elementos agregados en orden de insercion. Primero que se fije en la lista ordenada si esta y luego lo agregue en el ultimo lugar de el vector de insercion. Queria saber si mi idea tambien era valida o tiene algun inconveniente que no estoy viendo.

// La estructura planteada por la catedra:
// Mantenemos dos listas, una ascendente y otra por orden de inserción (una cola)
typedef struct listCDT {
    struct node * firstAsc;     // primero en orden ascendente
    struct node * firstInsert;
    struct node * lastInsert;
    struct node * iterAsc;      // para iterar en orden ascendente
    struct node * iterInsert;
    int (*compare) (elemType e1, elemType e2);  // almacenamos la función de comparación
} listCDT;

typedef struct node {
  elemType elem;
  struct node * tail;
} node;

// La que planteo yo:
struct node {
    elemType elem;
    struct node * next;
};

typedef struct node * pList;

struct listCDT {
    pList listAsc;
    elemType * vInsert;
    struct node * iAsc;
    int iInsert;
    fn cmp;
    size_t space;
    size_t dim;
};
marcelogarberoglio commented 1 week ago

El problema del vector es si tenés que eliminar elementos, vas a tener que correr todos los que le sigan