SlideServe
Menu
Préférences
© SlideServe · v2026

LES PILES ET FILES

agnes avatar
73 diapositives · 1.3K Views · Jun 12, 2012

LES PILES ET FILES. Les Piles et Files. Définition Ce sont des structures de données ordonnées, mais qui ne permettent l'accès qu'à une seule donnée. Les piles ( stack LIFO : Last In First Out) correspondent à une pile d'assiettes : on prend toujours l'élément supérieur, le dernier empilé.

LES PILES ET FILES - slide 1
01 / 73LES PILES ET FILES
1 / 17

Télécharger la présentation

LES PILES ET FILES
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. LES PILES ET FILES

  2. Les Piles et Files Définition • Ce sont des structures de données ordonnées, mais qui ne permettent l'accès qu'à une seule donnée. • Les piles (stackLIFO : Last In First Out) correspondent à une pile d'assiettes : on prend toujours l'élément supérieur, le dernier empilé. • Les files (on dit aussi queues) (stackFIFO: First In First Out) correspondent aux files d'attente : on prend toujours le premier élément, donc le plus ancien. • Elles servent à mémoriser des choses en attente de traitement. • Elles sont souvent associées à des algorithmes récursifs.

  3. Les Piles et Files Définition • Il n'y a pas de structures spécifiques prévues dans les langages, il faut donc les créer. • Pour les piles on utilisera : • un tableau unidimensionnel (statique ou dynamique) en cas de piles de hauteur maximale prévisible (la hauteur de la pile est mémorisée par une variable entière). • une liste en cas de longueur très variable (on a un surcoût en mémoire d'autant de liens (pointeurs) que d'éléments empilés).

  4. Les Piles et Files Définition • Pour les files on utilise: • un tableau (on nécessite deux variables : la position du premier et celle du dernier). La gestion est alors un peu plus complexe que pour les piles, puisque le suivant de la fin du tableau est le début du tableau. • une liste (aussi simple que pour une pile).

  5. Les Piles et Files Fonctions de base • Pour les piles sont l'empilage et le dépilage, pour les files l'enfilage et le défilage. • Dans les deux cas: on a une fonction d'initialisation, et une fonction indiquant si la pile (file) est vide. • Les fonctions de base dépendent de la méthode réelle de mise en oeuvre (tableau, liste,...). • On va pouvoir modifier facilement le type d'implantation en mémoire sans réécrire les programmes.

  6. Tableau statique–encas de piles de hauteur maximale prévisible (la hauteur de la pile est mémorisée par une variable entière). #define TypeEl float

  7. Tableau statique #include <stdio.h> 1/3 #define MAX_PILE 20 typedef float TypeEl; typedef struct { TypeEL v[MAX_PILE]; int top; } Stack; void init(Stack *S) { S->top = 0; } int full(Stack *S) { return (S->top >= MAX_PILE); } La définition de type Initialisation de la pile Indication si la pile est pleine

  8. Tableau statique void push(Stack *S, TypeEL val) 2/3 { if(!full(S)) { S->v[ S->top ] = val; /* òu bien: S->v[ (S->top)++ ] = val; */ (S->top)++; } else printf("La pile est pleine\n"); } float pop(Stack *S) { (S->top)--; return (S->v[S->top]); /* òu bien : return (S->v[--(S->top)]); */ } Empiler Dépiler

  9. Tableau statique void MyStackPrint(Stack *S) 3/3 { int i; if (S->top == 0) printf("La pile est vide.\n"); else { printf("Le contenu de la pile: "); for (i=0;i<S->top;i++) { printf("%.3g ",S->v[i]); } printf("\n"); } } Affichage du contenu

  10. Tableau statique • l'implantation des fonctions de base est similaire #include <stdio.h> 1/3 #include <conio.h> #include <ctype.h> #define dim_file 100 #define composante float static composante file[dim_file]; static int bas,sommet,taille; void init_file(void) { bas=sommet=taille=0;} int file_vide(void) { return(taille==0); } static pour empêcher l'accès direct extérieur Initialisation de la file Indication si la file est vide

  11. Tableau statique • l'implantation des fonctions de base est similaire int enfiler(composante x) 2/3 { if(taille<dim_file) { file[sommet]=x; if(sommet < dim_file-1) { sommet++; taille++;return(0); } } else { puts("file saturee");return(1); } } Enfiler

  12. Tableau statique • l'implantation des fonctions de base est similaire composante defiler(void) 3/3 { composante x; if (taille>0) { x=file[bas]; bas++; taille--; return(x); } else {puts("file vide");return(0);} } Défiler

  13. Tableau dynamique #define TypeEl float

  14. Tableau dynamique typedef int stack_data; 1/4 struct stack_rec { stack_data data; struct stack_rec *next; }; struct stack_rec *top=NULL; void stack_init() { top=NULL; } int stack_empty() { if (top==NULL) return(1); else return(0); } La définition de type Initialisation de la pile Indication si la pile est pleine

  15. Tableau dynamique Empiler void stack_push(stack_data d) 2/4 { struct stack_rec *temp; temp = (struct stack_rec *)malloc(sizeof(struct stack_rec)); temp->data=d; temp->next=top; top=temp; }

  16. Tableau dynamique stack_data stack_pop() 3/4 { struct stack_rec *temp; stack_data d=0; if (top!=NULL) { d=top->data; temp=top; top=top->next; free(temp); } return(d); } Dépiler

  17. Tableau dynamique void Print() 4/4 { struct stack_rec *temp=top; stack_data d=0; while (temp!=NULL) { d=temp->data; printf("\n%d",d); temp=temp->next; } } void stack_clear() { stack_data x; while (!stack_empty()) x=stack_pop(); } Affichage du contenu Vider une pile

  18. Piles: implantation dans une liste chaînée • Liste chaînée - en cas de longueur très variable (ne pas oublier que dans ce cas on a un surcoût en mémoire d'autant de liens (pointeurs) que d'éléments empilés).