Les fils d’attente I. Représentation contiguë dans un tableau A B C D Tête Queue Insertion Suppression A B C D E F Tête Queue Tête Queue A. Initialisation Var globales TIND file[1..n] Entier tete, queue Procédure initfile Début Tete 1 Queue 0 Fin B. Fonction filevide Fonction logique filevide Début Retourne (tête > queue) Fin C. Fonction filepleine Fonction logique filepleine Début Retourne() Fin NeoXsysm & DiAboLiK DUT info 1er année ALGORITHME Pages 1/3 Procédure d’ajout Procédure ajoutelem(valeur) Val TIND valeur Début Si non pilepleine Alors Queue queue + 1 File[queue] valeur Finsi Fin D. Suppression d’un élément Procédure suppelem(valeur) Ref TIND valeur Début Si non filevide Alors Valeur file[tête] Tête tête + 1 Finsi Fin E. Remarque Dans tous ces algorithmes tête et queue augmente toujours : le tableau risque d’être très vite saturé. Pour éviter cet inconvénient, on a deux possibilités : Décaler les éléments de la droite vers la gauche à chaque suppression Gérer le tableau de manière circulaire 1. Décaler vers la gauche A B C D E F G Suppression AB : C D E F G Tête Queue 2. Gérer le tableau de manière circulaire G B C D E F Queue Tête NeoXsysm & DiAboLiK DUT info 1er année ALGORITHME Pages 2/3 { II. Représentation par une liste chaînée Tête Queue A. Ajout de valeur Procédure ajoutelem(valeur) Val TIND valeur Début Si tête = NULL Alors Insertete(tete, valeur) Queue tête Sinon Insertete(queue, valeur) Queue (*Queue).suivant Finsi Fin B. Procédure suppression Procédure suppelem(valeur) Ref TIND valeur Début Si tête <> NULL Alors Valeur (*tête).info Suppetete(tête) Si tête = NULL Alors Queue NULL Fin Finsi Fin NeoXsysm & DiAboLiK DUT info 1er année ALGORITHME Pages 3/3