Ecrivez les fonctions du fichier linkedList.c correspondant au fichier linkedList.h ci-dessous :
#ifndef LINKED_LIST_H #define LINKED_LIST_H /* Maillon de la liste chainee */ typedef struct l { /* pointeur vers la donnee */ void* data; /* pointeur vers le maillon suivant */ struct l* next; } link; /* Type encapsulant la liste chainee */ typedef struct { /* nombre d'elements de la liste chainee */ int size; /* pointeur vers le premier elemtn de la liste chainee */ link* first; /* pointeur vers le dernier element de la liste chainee */ link* last; } linkedList; /* Cree une liste chainee ne contenant aucun element. */ linkedList* linkedListCreate(); /* Ajoute l'element x dans a la fin de la liste chainee l */ void linkedListAppend(linkedList* l, void* x); /* Ajoute le maillon lk a la fin de la liste l */ void linkedListAppendLink(linkedList* l, link* lk); /* Ajoute l'element x dans au debut de la liste chainee l */ void linkedListPush(linkedList* l, void* x); /* Ajoute le maillon lk au debut de la liste l */ void linkedListPushLink(linkedList* l, link* lk); /* Retourne la taille de la liste l */ int linkedListGetSize(linkedList* l); /* Retourne un pointeur vers le premier maillon de la liste chainee l, NULL si l est vide. */ link* linkedListGetFirst(linkedList* l); /* Retourne un pointeur vers le premier maillon de l, enleve ce maillon de la liste l. Retourne NULL si l est vide. */ link* linkedListUnlinkFirst(linkedList* l); /* Retourne une liste chainee contenant toutes les images des donnees par la fonction f. En posant f = id, on obtient une fonction de copie. */ linkedList* linkedListMap(linkedList* l, void* (*f)(void*)); /* Concatene les deux listes begin et end, la deuxieme est ajoutee a la fin de la premiere. */ void linkedListConcat(linkedList* begin, linkedList* end); /* Applique la fonction f a toutes les donnees de la liste l. Passer une fonction d'affichage permet par exemple d'afficher les donnees de chaque maillon. */ void linkedListApply(linkedList* l, void (*f)(void*)); /* Desalloue l et tous ses maillons, applique le destructeur fr a la donnee de chaque maillon. */ void linkedListDestroy(linkedList*, void (*fr)(void*)); #endif