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