Bases de donn�es de programmes � analyser



Pour chacun des programmes que nous pr�sentons ci-dessous, nous fournissons deux fichiers C : un premier fichier "nom.c" contenant seulement le programme en question, et un second fichier "nom_exemple.c" donnant un exemple d'utilisation de ce programme. Les exemples sont compilables (inclure le fichier averiles.h) avec "cc [-pthread] nom_exemple.c" et peuvent �tre lanc� avec "./a.out". Nous joignons un fichier "nom.pdf" correspondant � l'automate de chaque prgramme.

Programmes sans concurrence

Listes simplement cha�n�es non circulaires

Fonctionalit�s code C exemple C Automate correspondant
Cr�e une liste d'une taille quelconque, et retourne un pointeur sur la t�te de la liste cr�e create.c create_example.c create.pdf
Lib�re tout les �l�ments d'une liste deleteAll.c deleteAll_example.c deleteAll.pdf
Lib�re, s'il existe, le premier �l�ment d'une liste deletehead.c deletehead_exemple.c deletehead.pdf
Lib�re, s'ils existent, tout les �l�ments contenant une valeure donn�e deleteValue.c deleteValue_example.c delete.pdf
Lib�re tout les �l�ments d'une liste, deux par it�ration doubleFree.c doubleFree_example.c doubleFree.pdf
Ins�re un �l�ment en t�te de la liste insertAtHead.c insertAtHead_example.c insert.pdf
Ins�re un �l�ment � une position quelconque insertRandom.c insertRandom_example.c insert.pdf
Concat�ne deux listes dans un ordre quelconque, et retourne un pointeur sur la t�te de la liste obtenue merge.c merge_example.c merge.pdf
Renverse une liste, et retourne un pointeur sur la t�te de la liste obtenue reverse.c reverse_example.c reverse.pdf

Listes simplement cha�n�es circulaires

Fonctionalit�s code C exemple C Automate correspondant
Cr�e une liste simplement cha�n�e circulaire d'une taille quelconque, et retourne un pointeur sur la t�te de la liste cr�e addhead.c addhead_example.c add.pdf
Lib�re tout les �l�ments d'une liste delete.c delete_example.c delete.pdf

Listes doublement cha�n�es non circulaires

Fonctionalit�s code C exemple C Automate correspondant
Cr�e une liste simplement cha�n�e circulaire d'une taille quelconque, et retourne un pointeur sur la t�te de la liste cr�e addhead.c addhead_example.c add.pdf
Lib�re tout les �l�ments d'une liste delete.c delete_example.c delete.pdf

Programmes avec concurrence

Listes simplement cha�n�es non circulaires

Fonctionalit�s Code C exemple C Automates correspondants avec threads Automates correspondants
Lance deux threads pour manipuler une liste partag�e en utilisant un verrou: l'un ins�re des nouveaux �l�ments � la t�te de la liste (producteur), pendant que l'autre en supprime (consommateur) producer_consumer.c producer_consumer_example.c main_threads.pdf main.pdf

Listes simplement cha�n�es circulaires

Fonctionalit�s Code C exemple C Automates correspondants avec threads Automates correspondants
Lance deux threads pour manipuler une liste partag�e en utilisant un verrou: l'un ins�re des nouveaux �l�ments � la t�te de la liste (producteur), pendant que l'autre en supprime (consommateur) producer_consumer.c producer_consumer_example.c main_threads.pdf main.pdf

Listes doublement cha�n�es non circulaires

Fonctionalit�s Code C exemple C Automates correspondants avec threads Automates correspondants
Lance deux threads pour manipuler une liste partag�e en utilisant un verrou: l'un ins�re des nouveaux �l�ments � la t�te de la liste (producteur), pendant que l'autre en supprime (consommateur) producer_consumer.c producer_consumer_example.c main-threads.pdf main.pdf