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