Acabo de hacer el commit del modulo de las listas doblemente enlazadas. Aun no esta terminado, me quedan funciones que implementar pero trabajare en ello. De momento podeis ir haciendo uso de ellas, la interfaz de lo que esta no creo que se cambie. Si encontrais algun bug en ellas avisadme y yo lo correjire. El unico tipo que debeis conocer es ListType. Y creo que el nombre deja bastante claro lo que representa. Todas las funciones haran uso de estos tipos en forma de puntero, para asi aligerar el paso de los parametros. Para hacerlo funcionar: cread un tipo ListType*, le asignais el valor devuelto por la funcion list_create. Este es su prototipo: ListType* list_create (int type, int (*sort), void (*free), void* (*dup)); Donde: - type, es un campo con flags que indiquen el campo de la lista, de momento se acepta LIST_TYPE_UNIQUE, lo que hara que la lista no acepte valores repetidos. - sort debe ser una funcion, recibe 2 objetos y devuelve -1 si el primer elemento es menor. 0 si son iguales y 1 si el segundo es menor. - free recibe como argumento el objeto de un nodo y debe liberarlo. - dup, es otra funcion. Esta debe devolver una replica del objeto que recibe como argumento. Luego, para manejar esta lista tenemos las siguientes funciones de momento: void list_add (ListType*, void*); void list_delete (ListType*, void*); void list_rebind (ListType*); void* list_get (ListType*); int list_count (ListType*); void list_destroy (ListType*); Espero que no resulte demasiado complejo y que os sea util. Cualquier duda que tengais, bug que encontreis, o funcion que veais util comentadmelo porfavor. Happy hacking! :) -- Programming in Lisp is like playing with the primordial forces of the universe. It feels like lightning between your fingertips. No other language even feels close. — Glenn Ehrlich
participants (1)
-
iobrain