En aquest capítol definirem un conjunt de funcions d'ús general que poden ser emmagatzemades en una biblioteca i utilitzades des de qualsevol aplicació.
El conjunt de funcions que definirem formarà un nou tipus de dades per al maneig de les pistes, i si una aplicació vol utilitzar les mateixes, pot fer-ho a través d'aquest nou tipus de dades com si es tractés de funcions de la biblioteca estàndard C. Comencem per tant a definir les pistes i les seves funcions.
Un llistat estarà definit per dos demostradors, un per a indicar el primer component i l'altre per a l'últim. Cadascun dels components de la llista té un punter per a indicar el component al costat de la saliva, l'índex d'informació del component i la prioritat, ja que és possible introduir els components per ordre de prioritat. En el programa 1 apareix el contingut del fitxer llista_def.h, on es fa la llista i es defineix el component.
A continuació es dissenyaran i definiran les funcions de llista que precisaran les aplicacions.
Des del punt de vista del disseny, s'ha d'especificar quin tipus de funcions seran i quins paràmetres tindran. Per a començar, necessitarem la funció de crear una llista buida, que tingui com a únic paràmetre el creat, l'índex de la brisa. Per a saber si es tracta d'una simple llista, tindrem una funció booleana amb un únic paràmetre, la funció buit. Com en les llistes s'afegeixen els components i s'eliminen, les funcions principals seran afegir-los al final (sense tenir en compte la prioritat) o afegir-los per ordre de preferència, i eliminar el primer component o eliminar el primer component d'una determinada prioritat. Associar, inserir, primera i sortir a aquestes quatre funcions els correspondran els noms i les característiques següents:
Les funcions dissenyades es reflectiran en el fitxer llista_fun.h, ja que en les aplicacions aquest fitxer s'utilitzarà per a crear funcions sobre llistes.
En els següents programes s'ha iniciat la definició de les funcions 3 a 8, podent totes elles estar incloses en un fitxer o en fitxers separats. A l'inici de cada fitxer haurà d'especificar-se la sentència #include llista_def.h.
En la figura 1 es reflecteix l'estat normal, és a dir, l'element que s'insereix no sigui el primer o l'últim.
Les inverses de les funcions lligar i inserir són la primera i sortir, ja que en lloc d'amarrar un element el lleven.
Una vegada compilades aquestes funcions, és convenient guardar-les en una biblioteca per a facilitar el procediment d'enllaç quan es referencien des de les aplicacions. Les funcions del capítol anterior no se situaven en una biblioteca perquè estaven escrites per a una aplicació concreta, però l'objectiu de les funcions d'aquest capítol és oferir un nou tipus de dades per a qualsevol aplicació, per la qual cosa el procediment estàndard és situar-se en una biblioteca.
Cada sistema operatiu d'emmagatzematge de mòduls d'objectes a les biblioteques té un comando, tal com es va comentar en el capítol 11.
Si la biblioteca està completa, veurem com es poden utilitzar les funcions esmentades guardades a la biblioteca.
Ho explicarem amb un exemple. Pensem que en la base de dades del capítol anterior volem llistar els llibres per data de publicació. Segons l'indicat en el Programa 9, definirem una llista i els components de la mateixa se situaran en la memòria dinàmica.
Cadascun dels components o elements de la Llista està compost pel demostrador adjunt, la data de publicació com a prioritat i l'índex per al llibre corresponent. Una vegada completat el llistat corrent tots els llibres, els components es trauran i s'imprimiran en ordre.
Observi's que la llista i els elements, que fins ara no tenien assignada memòria, s'han definit en el programa principal, un en la memòria estàtica i un altre en la memòria dinàmica. D'altra banda, no es realitza la gestió de les funcions associades a les llistes, ja que el fitxer llista_fun.h està inclòs.
En vincular el programa es farà referència a la biblioteca a la qual pertanyen les llistes.