Upload
lopir120
View
33
Download
5
Embed Size (px)
Citation preview
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
STRUCTURES DE
DONNÉES
STRUCTURES DE
DONNÉES
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
STRUCTURES DE DONNÉES LINÉAIRES:
FILES D’ATTENTE
STRUCTURES DE DONNÉES LINÉAIRES:
FILES D’ATTENTE
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Plan de la leçonPlan de la leçon
TDA files d'attente TDA files d'attente
Opérations sur une file Opérations sur une file
Les files circulaires Les files circulaires
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
TDA files d'attente
TDA files d'attente
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
TDA files d'attenteTDA files d'attente
PourquoiPourquoi
Mettre en attentedes informationspour exécution
Mettre en attentedes informationspour exécution
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
CommentComment
TDA files d'attenteTDA files d'attente
La première information à être récupérée est celle qui a été mise en attente en premier
La première information à être récupérée est celle qui a été mise en attente en premier
Stratégie FIFO: First In First OutStratégie FIFO: First In First Out
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Domaine d'utilisation Domaine d'utilisation
TDA files d'attenteTDA files d'attente
Les problèmes qui suivent une stratégie FIFO peuvent être résolus en utilisant une
structure de données File
Les problèmes qui suivent une stratégie FIFO peuvent être résolus en utilisant une
structure de données File
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
TDA files d'attenteTDA files d'attente
Accès à un dispositif périphérique Accès à un dispositif périphérique Gestions des fichiers à imprimer Gestions des fichiers à imprimer
Gestion des processus/multitâche Gestion des processus/multitâche
Domaine d'utilisation Domaine d'utilisation
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
TDA files d'attenteTDA files d'attente
Ensemble d'éléments de même type
Insertion par une extrémité et suppression par une autre
Ensemble d'éléments de même type
Insertion par une extrémité et suppression par une autre
DéfinitionDéfinition
InsertionInsertion SuppressionSuppression
File File
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Initialiser une file d’attente à vide Initialiser une file d’attente à vide Indiquer si la file d’attente est vide Indiquer si la file d’attente est vide
Opérations sur une fileOpérations sur une file
TDA files d'attenteTDA files d'attente
Ajouter un nouvel élément en queue de la file Ajouter un nouvel élément en queue de la file Récupérer l'élément en tête de la file Récupérer l'élément en tête de la file
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Opérationssur une fileOpérationssur une file
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Représentation séquentielleReprésentation séquentielle
#define Max 100#define element intstruct fileAttente { element t[100]; int nbC;} q;
#define Max 100#define element intstruct fileAttente { element t[100]; int nbC;} q;
Opérations sur une fileOpérations sur une file
00nbC-1nbC-1
tt
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Opérations sur une fileOpérations sur une file
void raz() {q.nbC = 0;return;}
void raz() {q.nbC = 0;return;}
nbC==0nbC==0
tt
Initialiser une file d’attente à vide Initialiser une file d’attente à vide
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Opérations sur une fileOpérations sur une file
int vide() {return ( q.nbC != 0);}
int vide() {return ( q.nbC != 0);}
Indiquer si la filed’attente est vide Indiquer si la file
d’attente est vide
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Opérations sur une fileOpérations sur une file
Ajouter un élément en queueAjouter un élément en queue
00nbC-1nbC-1
tt
xx InsertionInsertion
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
00nbE-1nbE-1
vecvec
InsertionInsertionxx
Opérations sur une fileOpérations sur une file
Ajouter un élément en queueAjouter un élément en queue
00nbC-1nbC-1
tt
xxxx
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
00nbE-1nbE-1
vecvec
InsertionInsertionxx
Opérations sur une fileOpérations sur une file
Ajouter un élément en queueAjouter un élément en queue
00nbC-1nbC-1
tt
xxxx
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Opérations sur une fileOpérations sur une file
00nbC-1nbC-1
tt
xx
Ajouter un élément en queueAjouter un élément en queue
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
boolean ajouter(int noCl) { if( q.nbC >= Max) return false; q.t[nbC] =noCl; q.nbC++; return true;}
boolean ajouter(int noCl) { if( q.nbC >= Max) return false; q.t[nbC] =noCl; q.nbC++; return true;}
Opérations sur une fileOpérations sur une file
Ajouter un élément en queueAjouter un élément en queue
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Récupérer l'élément en têteRécupérer l'élément en tête
Opérations sur une fileOpérations sur une file
00nbC-1nbC-1 tt
xx
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
00nbE-1nbE-1 vecvec
xx
Opérations sur une fileOpérations sur une file
00nbC-1nbC-1 tt
xx
Récupérer l'élément en têteRécupérer l'élément en tête
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
00nbE-1nbE-1 vecvec
xx
Opérations sur une fileOpérations sur une file
00nbC-1nbC-1 tt
Récupérer l'élément en têteRécupérer l'élément en tête
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
void servir(void) { if( ! vide() ) { printf("Je sert le client %d\n",
q.t[0]); for(i=1; i<q.nbC; i++) q.t[i-1] = q.t[i]; q.nbC --;}}
void servir(void) { if( ! vide() ) { printf("Je sert le client %d\n",
q.t[0]); for(i=1; i<q.nbC; i++) q.t[i-1] = q.t[i]; q.nbC --;}}
Opérations sur une fileOpérations sur une file
Récupérer l'élément en têteRécupérer l'élément en tête
Servir un clientServir un client
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
AméliorationAmélioration
Opérations sur une fileOpérations sur une file
Prochain client à servir
Prochain client à servir
Prochain client à ajouter
Prochain client à ajouter
Ne rien déplacer Ne rien déplacer
finfin 00debutdebut
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Servir un clientServir un client
void servir(void) { if( ! vide() ) { printf("Je sert le client %d\n", q.t[q.debut]); q.debut++; }
void servir(void) { if( ! vide() ) { printf("Je sert le client %d\n", q.t[q.debut]); q.debut++; }
Opérations sur une fileOpérations sur une file
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
ProblèmeProblème
On risque de dépasserla capacité alors qu’il reste
encore de la place
On risque de dépasserla capacité alors qu’il reste
encore de la place
Opérations sur une fileOpérations sur une file
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Les files circulairesLes files circulaires
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Les files circulairesLes files circulaires
EmplacemenEmplacement t
Libre pour le Libre pour le prochain prochain élémentélément
EmplacemenEmplacement t
Libre pour le Libre pour le prochain prochain élémentélément
inin
outout
vecvec
L’élémentL’élémentde têtede tête
L’élémentL’élémentde têtede tête
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
DéclarationDéclaration
#define Max 100#define element intstruct fileCirculaire { element t[Max]; int in, out; bool plein;} q;
#define Max 100#define element intstruct fileCirculaire { element t[Max]; int in, out; bool plein;} q;
Les files circulairesLes files circulaires
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Initialiser une file à videInitialiser une file à vide
void raz() { q.in = 0; q.out = 0; q.plein = false; return;}
void raz() { q.in = 0; q.out = 0; q.plein = false; return;}
Les files circulairesLes files circulaires
q.tq.t in=out=0
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
boolean vide() { return ( (q. in == q.out ) && (q.plein == false) );}
boolean vide() { return ( (q. in == q.out ) && (q.plein == false) );}
Les files circulairesLes files circulaires
Indiquer si la file est videIndiquer si la file est vide
q.tq.tout=in=0
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Ajouter un nouvel élémentAjouter un nouvel élément
boolean ajouter(int noCl) {boolean ajouter(int noCl) {
Les files circulairesLes files circulaires
if( q.plein) return false;q.t[q.in] = noCl;q.in=(q.in +1)% Max;q.plein=(q.in== q.out);return true;}
if( q.plein) return false;q.t[q.in] = noCl;q.in=(q.in +1)% Max;q.plein=(q.in== q.out);return true;}
outout
q.tq.t
inin
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Récupérer l'élément en têteRécupérer l'élément en tête
void servir(void) { if( ! vide() ) { printf("Je sert %d\n",
q.t[q.out]);q.out=(q.out +1)%Max;q.plein = false; }
void servir(void) { if( ! vide() ) { printf("Je sert %d\n",
q.t[q.out]);q.out=(q.out +1)%Max;q.plein = false; }
Les files circulairesLes files circulaires
outout
q.tq.t
inin
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Affichage des éléments de la fileAffichage des éléments de la file
void printFileCirculaire(void) { int i=q.out; do { printf("%d\t",q.t[i]); i=(i+1)%Max; }while(i != q.in ); return;}
void printFileCirculaire(void) { int i=q.out; do { printf("%d\t",q.t[i]); i=(i+1)%Max; }while(i != q.in ); return;}
Les files circulairesLes files circulaires
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Décrire les opérations suivantes sur une file d’attente
Décrire les opérations suivantes sur une file d’attente
ExerciceExercice
Les files circulairesLes files circulaires
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Les files circulairesLes files circulaires
inin
plein== falseplein== false
outout
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Les files circulairesLes files circulaires
inin
plein== falseplein== false
outout
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
00
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Les files circulairesLes files circulaires
inin
plein== falseplein== false
outout
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
00 11
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Les files circulairesLes files circulaires
plein== falseplein== false
outout
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
00 11
inin
22 33
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Les files circulairesLes files circulaires
plein== falseplein== false
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
00 11
inin
22 33
outout
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Les files circulairesLes files circulaires
plein== falseplein== false
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
00 11 22 33
outoutinin
44
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Les files circulairesLes files circulaires
plein== falseplein== false
insere(0);insere(1);insere(2);insere(3);ote(); ote();insere(4);ote();ote();insere(5);insere(6);
insere(0);insere(1);insere(2);insere(3);ote(); ote();insere(4);ote();ote();insere(5);insere(6);
00 11 22 33
inin
44
outout
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Les files circulairesLes files circulaires
plein== falseplein== false
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
insere(0);insere(1);insere(2);insere(3); ote(); ote();insere(4);ote();ote();insere(5);insere(6);
00 11 22 33 44
outout
55
inin
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
Les files circulairesLes files circulaires
plein== falseplein== false
insere(0);insere(1);insere(2);insere(3);ote(); ote();insere(4);ote();ote();insere(5);insere(6);
insere(0);insere(1);insere(2);insere(3);ote(); ote();insere(4);ote();ote();insere(5);insere(6);
11 22 33 44
outout
5566
inin
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
DiscussionDiscussion
PrioritéPriorité
Clients qui arrivent dans la filemais avec une priorité.On doit servir ... le 10
Clients qui arrivent dans la filemais avec une priorité.On doit servir ... le 10
Réorganiser les autres pourpréparer le client suivant
Réorganiser les autres pourpréparer le client suivant
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
DiscussionDiscussion
PrioritéPriorité
00
33 1010 11 66 88 99 22
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
DiscussionDiscussion
C’est comme celaque sont gérés
C’est comme celaque sont gérés
Les impressions en UnixLes impressions en Unix
L’ordonnanceur du systèmeL’ordonnanceur du système
Structures de donnéesLeçon n. 1 – Introduction et vue d’ensemble
Prof. A. EL FAKERENSIAS - UNIVERSITE MOHAMMED V SOUISSI
Leçon n° 9 – Structures de données linéaires : les files d’attente
STRUCTURES DE
DONNÉES
STRUCTURES DE
DONNÉES