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;
};
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.