Académique Documents
Professionnel Documents
Culture Documents
Cours: ASD 2
Réalisé par:
Dr. Sakka Rouis Taoufik
I. Introduction
1
04/04/2023
I. Introduction
OPERATIONS ILLEGALES :
II. Propriétés
2
04/04/2023
II. Propriétés
3
04/04/2023
define n 100
struct file {
int cle[n] ;
unsigned tete;
unsigned queue;
};
4
04/04/2023
#include<assert.h>
#include "file.h"
5
04/04/2023
Question : En partant de
cette file vide (de taile n=5),
exécuter la séquence
suivante :
11
c) L’état en position 0 est disponible, mais on ne peut pas enfiler de nouveau !!!
12
6
04/04/2023
13
14
7
04/04/2023
Constatation :
16
8
04/04/2023
17
18
9
04/04/2023
void enfiler (int info, struct file*f) { void defiler (struct file *f) {
assert(ftete != ((fqueue+1)%n)) ; assert(!file_vide(*f));
/* au – deux cases vides */ ftete++ ;
f queue++;
if (fqueue > n-1) if (ftete > n-1)
fqueue=0; ftete=0 ;
fcle[fqueue]=info ; }
}
19
20
10
04/04/2023
Objet abstrait (OA)un seul exemplaire (ici une seul File) unique
implicite.
22
11
04/04/2023
23
12
04/04/2023
struct element * q ;
assert (! file_vide (f) ) ;
q = (f->tete) ;
f->tete = f->tete->suivant ;
free (q) ;
if ( f-> tete == NULL ) /* un seul élément dans la file */
f->queue = NULL ;
26
13
04/04/2023
V. Exercices d’application
Exercice 1:
Implémenter la méthode« void defilerJusquaElem (struct
file *f , int x ) » permettant de défiler les éléments de la file
jusqu'à attendre l'élément x ou bien jusqu‘à la fin des
éléments.
NB. L'élément x n’est pas défilé.
Exercice 2:
Montrer comment implémenter une file à partir de deux
piles. Analyser le temps d’exécution des opérations de file.
27
V. Exercices d’application
Exercice 3:
On donne un ensemble d’éléments dont le nombre n’est
pas connu a priori et variable (à cause des adjonctions et
suppressions). Les éléments de cet ensemble sont classés
en m catégories (m est connu a priori et fixe). Les éléments
appartenant à une catégorie donnée sont gérées selon la
stratégie FIFO. On vous demande de concevoir et réaliser
en C un module permettant de gérer un tel ensemble.
28
14
04/04/2023
V. Exercices d’application
Solution Exercice 3:
/* Partie Interface :ens.h */ /* services exportés */
#define n 10 void creer( struct file * []) ;
/* representation phisique File */
struct element { void ajouter(struct file *[], unsigned , int) ;
int cle ; /*le second paramètre indique la
struct element *suivant ; catégorie et le troisième l’information à
}; ajouter à cette catégorie */
struct file {
struct element *tete ; void supprimer( struct file*[], unseigned) ;
struct element *queue ; /* le second paramètre indique la
} catégorie */
29
V. Exercices d’application
15