Piles et files
Sommaire Introduction Piles Files Files de priorités Analyse d'expressions arithmétiques Chapitre 4 Data Structures & Algorithm, 2nd Edition, Robert Lafore
Introduction Tableaux, listes chaînées, arbres, etc. Appropriés pour représenter les données du monde réel Facilitent l'accès aux données : insertion, suppression et recherche Piles, files, etc., Outils de programmation Durée de vie plus courte Prise en charge de certaines tâches Accès restreint : un seul élément est accessible L'interface renforce l'accès restreint Abstraction Piles, files et files de priorités : abstraites Interface : opérations possibles Implémentation non visible
Piles Pile : conteneur implémentant le protocole dernier entré, premier sortie (LIFO) Objet accessible : dernier entré Accès à l'avant dernier : enlever le dernier Utile dans plusieurs situations de programmation Contrôle : parenthèses, crochets, accolades Analyse : expression arithmétique
Piles Opérations Empiler une valeur au sommet d'une pile; Remplacer la valeur du sommet d'une pile; Dépiler la valeur du sommet d'une pile; Savoir si une pile est vide; Obtenir la longueur d'une pile; Déterminer la valeur du sommet d'une pile.
Piles Opérations
Piles Voir EXPILE-FILE (méthode main())
Piles Voir EXPILE-FILE (méthode testPile())
Piles Voir EXPILE-FILE (classe Pile()) ……
Piles Voir EXPILE-FILE (classe Pile()) suite …
Piles Applications possibles Inverser un mot, une phrase Valider les délimiteurs dans une expression arithmétique Valider les délimiteurs dans un programme ({})
Files (queue) Nous connaissons tous la notion de file …. d’attente
Files (queue) File : implémente le protocole premier entré, premier sortie (FIFO) Objet accessible : objet inséré en premier Utile dans plusieurs situations : Programmation Systèmes d'exploitation Monde réel Opérations : Déposer une valeur à la fin d'une queue ; Prélever la valeur du début d'une queue Savoir si une queue est vide Obtenir la longueur d'une queue Déterminer la valeur du début d'une queue
Files (queue) Opérations :
Files (circulaire) Avec une file standard: Insertion : fin (rear) se déplace vers le haut Avec un file standard: Suppression : début (front) se déplace vers le haut Quand l’Index = N-1 => il devient impossible d'insérer malgré les emplacements libres Avec une file circulaire, l’indice suivant de la position N-1 et la position 0 : Rear et Front s'enroulent autour du début du tableau Il faut alors maintenir cette relation durant les opérations d'insertion et de suppression Rear en dessous de Front, ne dépasse pas Front
Files (circulaire) Opérations
Files (queue) Voir EXPILE-FILE (classe File())
Files (queue) Voir EXPILE-FILE (classe File()) suite ….
Files (queue) Voir EXPILE-FILE (classe File()) suite ….
Files de priorité Une queue de priorité est une queue pour laquelle l'insertion à lieu en fonction d'un critère donné Queue triée selon un critère donné Conteneur BIFO : l'élément avec la plus grande priorité est le premier à sortir Largement utilisée dans les systèmes informatisées : imprimantes réseau – petits travaux prioritaires Insertion : selon critère Queue de priorités : tas Rear et Front : aucun rôle en particulier
Files de priorité Opérations
Analyse d’expressions arithmétiques Structure utilisée: PILE Par exemple avec les expressions suivantes: 2 * (3 + 4) ((2 + 4) * 7) + 3 * (9 – 5) L'évaluation de ce type d'expression se fait en deux étapes : transformation de l'expression arithmétique dans une forme différente : notation post- fixée; évaluation de l'expression post-fixée Différentes formes d’expression Notation in-fixée : L'opérateur est placé entre les deux opérandes Notation post-fixée : L'opérateur est placé après les deux opérandes Notation pré-fixée : L'opérateur est placé avant les deux opérandes
Analyse d’expressions arithmétiques Exemple d’expressions et formes
Analyse d’expressions arithmétiques Pour transformer une expression in-fixée en une expression post-fixée : réarranger les opérandes et les opérateurs dans un format particulier résultat : évalué plus tard Exemple : A + B * C
Analyse d’expressions arithmétiques Exemple : A + B * C
Analyse d’expressions arithmétiques Exemple:
Analyse d’expressions arithmétiques Algorithme de transformation