SlideShare une entreprise Scribd logo
Structures de données
1
Piles et Files
En utilisant les listes chainées
Prof. M. Khalifa MANSOURI
Université Hassan II de Casablanca
ENSET de Mohammedia
Département Mathématiques et Informatique
Structures de données
1. Les piles
2
Les piles
3
Une pile (stack en anglais) est une structure dynamique dans
laquelle l'insertion ou la suppression d'un élément s‘effectue
toujours à partir de la même extrémité de cette structure.
Cette extrémité est appelée le sommet de la pile.
Définition
Les piles
4
Une pile permet de modéliser un système régi par
le mécanisme « dernier arrivé premier sorti » :
(Lifo : last in, first out).
Principe de LIFO
• L'action pour ajouter un nouvel élément au sommet de la
pile s'appelle Empiler
• L’action pour retirer l‘élément situé au sommet de
la pile s'appelle Dépiler
Les application des piles
5
De nombreuse applications s'appuient sur l'utilisation d'une pile, on peut citer :
• Dans un navigateur web, une pile sert à mémoriser les pages Web visitées.
• L'adresse de chaque nouvelle page visitée est empilée et l'utilisateur dépile
• l'adresse de la page précédente en cliquant le bouton « Afficher la page
précédente ».
• L‘évaluation des expressions mathématiques en notation post-fixée (ou polonaise
inverse) utilise une pile.
• La fonction « Annuler la frappe » (en anglais « Undo ») d'un traitement de
texte mémorise les modifications apportées au texte dans une pile.
• Vérification de parenthèse d'une chaine de caractères ;
• La récursivité (une fonction qui fait appel a elle même) ;
• etc.…
Utilisation
Les application des piles
6
Ajouter dans cet ordre
A EB D FCA B C D E F
Pile
Exemple de Pile (1)
Les application des piles
7
A
B
C
D
E
F
Pile
Exemple de Pile (2)
Les application des piles
8
Les application des piles
9
Implémentation d’une pile
1
Représentation d'une Pile
Représentation contiguë (par tableau) :
Les éléments de la pile sont rangés dans un tableau
Un entier représente la position du sommet de la pile
Représentation chaînée (par pointeurs) :
Les éléments de la pile sont chaînés entre eux
Un pointeur sur le premier élément désigne la pile et
représente le sommet de cette pile
Une pile vide est représentée par le pointeur NULL
Implémentation d’une pile
1
On peut implémenter une pile à l’aide de la même structuration qu’une liste chainée
e1 e2 e3 e4@ @ @ NULL
*P
@
Implémentation d’une pile
1
Pile chaînée
p
Pile
10 20
50
Sommet de la pile
pointée par p
Cellule contenant la
valeur 5
Pointeur sur cellule
suivante
Pointeur
NULL
Implémentation d’une pile
1
Syntaxe pour définir la structure de la pile
//Définir la structure cellule
typedef struct Element
{
int info ; //le champ info peut avoir n'importe quel type
struct Element *suiv ; //pointeur contenant l'adresse de l’élément suivant
} Element;
Déclaration d’une pile
Element pile; // En utilisant une variable statique
Element *pile; // En utilisant une variable dynamique
Opérations sur une pile
1
Voici les primitives communément utilisées :
1. Element *PileVide() : créer une pile vide
2. int EstVide(Element *p) : renvoie vrai si la pile est vide, faux sinon ;
3. Type Sommet(Element *p) : renvoie l‘élément sommet de type Type
de la pile P ;
4. Element* Empiler(Element *p,Type v) : ajoute au sommet de la pile
P l’élément v de type Type;
5. Element* Depiler(Element *P) : supprime de la pile P le sommet.
Implémentation d’une pile
1
Element PileVide()
Element PileVide()
{
return(NULL) ;
}
Implémentation d’une pile
1
int EstVide()
int EstVide(Element *pile)
{
if(pile==NULL)
return (1) ;
else
return (0) ;
}
Dans la suite on considère que Type est entier
Implémentation d’une pile
1
sommet(P)
int sommet(Element *p)
{
if(p==NULL)
printf("pile vide!");
else
return p->info;
}
Implémentation d’une pile
1
Element empiler()
Element Empiler(Element *P,int v)
{
Element *nouv ;
nouv =(Element*)malloc(sizeof(Element)) ;
nouv ->info=v ;
nouv ->suiv=p ;
return(nouv) ;
}
Implémentation d’une pile
1
Element depiler(Element *p)
Element Depiler(Element *P)
{
Element *c = p ;
if(c==NULL)
return(NULL) ;
else
{
p = p -> suiv ;
free(c) ;
return(p) ;
}
}
Structures de données
2. Les files
2
Les Files
2
Une File (queue en anglais ) est une structure de données
dans laquelle l'insertion se fait à la fin et la suppression d'un
élément s'effectue à partir de début de cette structure.
Le fonctionnement ressemble à une file d'attente : les
premières personnes arrivées, se sont les premières
personnes à servir.
Définition
Les files
2
Une file permet de modéliser un système régi par le
mécanisme "premier arrivé premier sorti" ; on dit souvent
FIFO (First in, First out)
Principe de FIFO
•L'action pour ajouter un nouvel élément s'appelle Enfiler
•L'action pour retirer l‘élément situe au début de la File
s'appelle Défiler
Les application des files
2
Les application des files
2
Ajouter dans cet ordre
A EB D FCA B C D E F
Exemple de File (1)
Fil
e
Les application des files
2
A EB D FC
Exemple de File (2)
File
Les application des files
2
• En général, on utilise des files pour mémoriser temporairement des transactions qui
doivent attendre pour être traitées ;
• Les serveurs d'impression, qui doivent traiter les requêtes dans l'ordre dans lequel
elles arrivent, et les insèrent dans une file d'attente ( ou une queue) ;
• Certains moteurs multitâches, dans un système d'exploitation, qui doivent accorder
du temps-machine a chaque tâche, sans en privilégier aucune ;
• Un algorithme de parcours en largeur utilise une file pour mémoriser les nœuds
visités ;
• On utilise aussi des files pour créer toutes sortes de mémoires tampons (en anglais
buffers).
• etc.…
Utilisation
Les application des files
2
Les application des files
2
Les application des files
2
Représentation d'une File
Représentation contiguë (par tableau) :
Les éléments de la file sont rangés dans un tableau
Deux entiers représentent respectivement les
positions de la tête et de la queue de la file
Représentation chaînée (par pointeurs) :
Les éléments de la file sont chaînés entre eux
Un pointeur sur le premier élément désigne la file
et représente la tête de cette file
Un pointeur sur le dernier élément représente la
queue de file
Une file vide est représentée par le pointeur NULL
Implémentation d’une file
3
On peut implémenter une file à l’aide de la même structuration qu’une
liste chainée
e1 e2 e3 e4@ @ @ NULL
*premier
@
*dernier
@
Et on mémorise le premier et le dernier élément
Les application des files
3
File chaînée
tete
File
10 20
50
Tête de la file pointée par
tete
Cellule contenant la
valeur 30
Pointeur sur cellule
suivante
Pointeur
NULLqueue
Queue de file pointée
par queue
Implémentation d’une File
3
Syntaxe pour définir la structure de la File
//Définir la structure cellule
typedef struct Element
{
int info ; //le champ info peut avoir n'importe quel type
struct Element *suiv ; //pointeur contenant l'adresse de l’élément suivant
} Element;
//Définir la structure File
typedef struct File
{
Element *premier;
Element *dernier;
} File;
Implémentation d’une file
3
Déclaration d’une file
File file; // En utilisant une variable statique
File *file; // En utilisant une variable dynamique
Opérations sur une file
3
Voici les primitives communément utilisées :
1. File FileVide(File F) : créer une file vide
2. int EstVide(File F) : renvoie vrai si la file est vide, faux sinon ;
3. Type PremierElement(File F) : renvoie le premier élément de type
Type de la File F;
4. File Emfiler(File F,Type v) : ajoute à la fin de la file F l’élément v de
type Type;
5. File Defiler(File F) : supprime de la file F le premier élément.
Implémentation d’une file
3
File FileVide()
File FileVide()
{
File F ;
F.premier = NULL ; ;
F.Dernier = NULL ;
return(F) ;
}
Implémentation d’une file
3
int EstVide()
int EstVide(File F)
{
if(F.premier==NULL)
return (1) ;
else
return (0) ;
}
Dans la suite on considère que Type est entier
Implémentation d’une file
3
int premierElement(File F)
int premierElement(File F)
{
if(Estvide(F)
printf("file vide!");
else
return F.premier->info;
}
Implémentation d’une file
3
Emfiler()
File Emfiler(File F,int v)
{
Element *nouv ;
nouv =(Element*)malloc(sizeof(Element)) ;
nouv ->info=v ;
nouv ->suiv=NULL ;
If Estvide(F)
{
F.premier=nouv;
F.dernier=nouv;
}
else
{
F.dernier->suivant=nouv;
F.dernier=nouv;
}
return(F) ;
}
Implémentation d’une file
3
Element defiler(File F)
File Defiler(File F)
{
Element *c;
If estvide(F)
{
Printf("file vide!");
return(NULL) ;
}
else
{
c=F->premier ;
F->premier=F->premier->suivant;
free(c) ;
return(F) ;
}
}

Contenu connexe

Tendances

TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
Lilia Sfaxi
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
Aziz Darouichi
 
Rapport Mini Projet : élaborer un moteur de Recherche spécialisé en Education
Rapport Mini Projet : élaborer un moteur de Recherche spécialisé en EducationRapport Mini Projet : élaborer un moteur de Recherche spécialisé en Education
Rapport Mini Projet : élaborer un moteur de Recherche spécialisé en Education
Mohamed Amine Mahmoudi
 
algorithme tronc commun lycée
algorithme tronc commun lycéealgorithme tronc commun lycée
algorithme tronc commun lycée
Kayl Mido
 
Uml examen
Uml  examenUml  examen
Uml examen
Majid CHADAD
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2
Faycel Chaoua
 
Chapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesChapitre 3 structures séquentielles
Chapitre 3 structures séquentielles
Sana Aroussi
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
NadaBenLatifa
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
Amir Souissi
 
Rapport Projet de Fin d'Etudes
Rapport Projet de Fin d'EtudesRapport Projet de Fin d'Etudes
Rapport Projet de Fin d'Etudes
Hosni Mansour
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcminfcom
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
Lilia Sfaxi
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
vangogue
 
Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerSana Aroussi
 
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineRapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Mohamed Amine Mahmoudi
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
Sana Aroussi
 
La gestion des exceptions avec Java
La gestion des exceptions avec JavaLa gestion des exceptions avec Java
La gestion des exceptions avec Java
Papa Cheikh Cisse
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
Abdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
Abdoulaye Dieng
 

Tendances (20)

TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Rapport Mini Projet : élaborer un moteur de Recherche spécialisé en Education
Rapport Mini Projet : élaborer un moteur de Recherche spécialisé en EducationRapport Mini Projet : élaborer un moteur de Recherche spécialisé en Education
Rapport Mini Projet : élaborer un moteur de Recherche spécialisé en Education
 
algorithme tronc commun lycée
algorithme tronc commun lycéealgorithme tronc commun lycée
algorithme tronc commun lycée
 
Uml examen
Uml  examenUml  examen
Uml examen
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2
 
Chapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesChapitre 3 structures séquentielles
Chapitre 3 structures séquentielles
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Rapport Projet de Fin d'Etudes
Rapport Projet de Fin d'EtudesRapport Projet de Fin d'Etudes
Rapport Projet de Fin d'Etudes
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcm
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régner
 
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineRapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
 
La gestion des exceptions avec Java
La gestion des exceptions avec JavaLa gestion des exceptions avec Java
La gestion des exceptions avec Java
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 

Similaire à Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI

Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
Sana REFAI
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
Sana REFAI
 
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfg
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfgPile et file ddd dcdsfv gfbg fdgfdg fdbdgfg
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfg
Nabil Alami
 
Structures donneenew
Structures donneenewStructures donneenew
Structures donneenew
Rachid Lajouad
 
Structures donnee
Structures donneeStructures donnee
Structures donnee
Rachid Lajouad
 
Cours sur les files et les piles assez complet
Cours sur les files et les piles assez completCours sur les files et les piles assez complet
Cours sur les files et les piles assez complet
AzizGueye1
 
Algorithme et Structures de Donees 2-Structures Linéaires&NonLimeaire.pdf
Algorithme et Structures de Donees 2-Structures Linéaires&NonLimeaire.pdfAlgorithme et Structures de Donees 2-Structures Linéaires&NonLimeaire.pdf
Algorithme et Structures de Donees 2-Structures Linéaires&NonLimeaire.pdf
SkouDoucour
 
Chapitre 2 : Les Listes chainées en Algo et C
Chapitre 2 : Les Listes chainées en Algo et CChapitre 2 : Les Listes chainées en Algo et C
Chapitre 2 : Les Listes chainées en Algo et C
Sana REFAI
 
Cours C Avancé chapitre 2 et chapitre.pdf
Cours C Avancé  chapitre 2 et chapitre.pdfCours C Avancé  chapitre 2 et chapitre.pdf
Cours C Avancé chapitre 2 et chapitre.pdf
c79024186
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
Amir Souissi
 
Python et la persistance de données — initiation python 1.5
Python et la persistance de données — initiation python 1.5Python et la persistance de données — initiation python 1.5
Python et la persistance de données — initiation python 1.5Abib Faye
 
Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2
Mathieu Saby
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniShellmates
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
Jaouad Rachek
 
Rapport Projet Module Complexité
Rapport Projet Module ComplexitéRapport Projet Module Complexité
Rapport Projet Module Complexité
Fatima Zahra Fagroud
 

Similaire à Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI (18)

Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfg
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfgPile et file ddd dcdsfv gfbg fdgfdg fdbdgfg
Pile et file ddd dcdsfv gfbg fdgfdg fdbdgfg
 
Structures donneenew
Structures donneenewStructures donneenew
Structures donneenew
 
Structures donnee
Structures donneeStructures donnee
Structures donnee
 
Cours sur les files et les piles assez complet
Cours sur les files et les piles assez completCours sur les files et les piles assez complet
Cours sur les files et les piles assez complet
 
Algorithme et Structures de Donees 2-Structures Linéaires&NonLimeaire.pdf
Algorithme et Structures de Donees 2-Structures Linéaires&NonLimeaire.pdfAlgorithme et Structures de Donees 2-Structures Linéaires&NonLimeaire.pdf
Algorithme et Structures de Donees 2-Structures Linéaires&NonLimeaire.pdf
 
pile file.pptx
pile file.pptxpile file.pptx
pile file.pptx
 
Chapitre 2 : Les Listes chainées en Algo et C
Chapitre 2 : Les Listes chainées en Algo et CChapitre 2 : Les Listes chainées en Algo et C
Chapitre 2 : Les Listes chainées en Algo et C
 
Cours C Avancé chapitre 2 et chapitre.pdf
Cours C Avancé  chapitre 2 et chapitre.pdfCours C Avancé  chapitre 2 et chapitre.pdf
Cours C Avancé chapitre 2 et chapitre.pdf
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
 
Python et la persistance de données — initiation python 1.5
Python et la persistance de données — initiation python 1.5Python et la persistance de données — initiation python 1.5
Python et la persistance de données — initiation python 1.5
 
Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El Hassani
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 
Rapport Projet Module Complexité
Rapport Projet Module ComplexitéRapport Projet Module Complexité
Rapport Projet Module Complexité
 

Plus de Mansouri Khalifa

Cours bases de données partie 2 Prof. Khalifa MANSOURI
Cours bases de données partie 2 Prof. Khalifa MANSOURICours bases de données partie 2 Prof. Khalifa MANSOURI
Cours bases de données partie 2 Prof. Khalifa MANSOURI
Mansouri Khalifa
 
Cours bases de données partie 1 Prof. Khalifa MANSOURI
Cours bases de données partie 1 Prof. Khalifa MANSOURICours bases de données partie 1 Prof. Khalifa MANSOURI
Cours bases de données partie 1 Prof. Khalifa MANSOURI
Mansouri Khalifa
 
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours  systèmes temps réel partie 2 Prof. Khalifa MANSOURICours  systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Mansouri Khalifa
 
Cours systèmes temps réel partie 1 Prof. Khalifa MANSOURI
Cours  systèmes temps réel partie 1 Prof. Khalifa MANSOURICours  systèmes temps réel partie 1 Prof. Khalifa MANSOURI
Cours systèmes temps réel partie 1 Prof. Khalifa MANSOURI
Mansouri Khalifa
 
Cours guvernance des systèmes d'information partie 3 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 3 prof. Khalifa MANSOURICours guvernance des systèmes d'information partie 3 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 3 prof. Khalifa MANSOURI
Mansouri Khalifa
 
Cours guvernance des systèmes d'information partie 2 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 2 prof. Khalifa MANSOURICours guvernance des systèmes d'information partie 2 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 2 prof. Khalifa MANSOURI
Mansouri Khalifa
 
Cours guvernance des systèmes d'information partie 1 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 1 prof. Khalifa MANSOURICours guvernance des systèmes d'information partie 1 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 1 prof. Khalifa MANSOURI
Mansouri Khalifa
 
Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI
Mansouri Khalifa
 
UML Part 6 diagramme etat transition mansouri
UML Part 6 diagramme etat transition mansouriUML Part 6 diagramme etat transition mansouri
UML Part 6 diagramme etat transition mansouri
Mansouri Khalifa
 
UML Part 5- diagramme d'activités mansouri
UML Part 5- diagramme d'activités mansouriUML Part 5- diagramme d'activités mansouri
UML Part 5- diagramme d'activités mansouri
Mansouri Khalifa
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
Mansouri Khalifa
 
UML Part 3- diagramme de séquences mansouri
UML Part 3- diagramme de séquences mansouriUML Part 3- diagramme de séquences mansouri
UML Part 3- diagramme de séquences mansouri
Mansouri Khalifa
 
UML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriUML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouri
Mansouri Khalifa
 
UML Part1-Introduction Mansouri
UML Part1-Introduction MansouriUML Part1-Introduction Mansouri
UML Part1-Introduction Mansouri
Mansouri Khalifa
 
Systèmes d'Information dans les organisations
Systèmes d'Information dans les organisationsSystèmes d'Information dans les organisations
Systèmes d'Information dans les organisations
Mansouri Khalifa
 
Analyse merise Prof. Khalifa MANSOURI
Analyse merise Prof. Khalifa MANSOURIAnalyse merise Prof. Khalifa MANSOURI
Analyse merise Prof. Khalifa MANSOURI
Mansouri Khalifa
 

Plus de Mansouri Khalifa (16)

Cours bases de données partie 2 Prof. Khalifa MANSOURI
Cours bases de données partie 2 Prof. Khalifa MANSOURICours bases de données partie 2 Prof. Khalifa MANSOURI
Cours bases de données partie 2 Prof. Khalifa MANSOURI
 
Cours bases de données partie 1 Prof. Khalifa MANSOURI
Cours bases de données partie 1 Prof. Khalifa MANSOURICours bases de données partie 1 Prof. Khalifa MANSOURI
Cours bases de données partie 1 Prof. Khalifa MANSOURI
 
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours  systèmes temps réel partie 2 Prof. Khalifa MANSOURICours  systèmes temps réel partie 2 Prof. Khalifa MANSOURI
Cours systèmes temps réel partie 2 Prof. Khalifa MANSOURI
 
Cours systèmes temps réel partie 1 Prof. Khalifa MANSOURI
Cours  systèmes temps réel partie 1 Prof. Khalifa MANSOURICours  systèmes temps réel partie 1 Prof. Khalifa MANSOURI
Cours systèmes temps réel partie 1 Prof. Khalifa MANSOURI
 
Cours guvernance des systèmes d'information partie 3 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 3 prof. Khalifa MANSOURICours guvernance des systèmes d'information partie 3 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 3 prof. Khalifa MANSOURI
 
Cours guvernance des systèmes d'information partie 2 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 2 prof. Khalifa MANSOURICours guvernance des systèmes d'information partie 2 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 2 prof. Khalifa MANSOURI
 
Cours guvernance des systèmes d'information partie 1 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 1 prof. Khalifa MANSOURICours guvernance des systèmes d'information partie 1 prof. Khalifa MANSOURI
Cours guvernance des systèmes d'information partie 1 prof. Khalifa MANSOURI
 
Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI
 
UML Part 6 diagramme etat transition mansouri
UML Part 6 diagramme etat transition mansouriUML Part 6 diagramme etat transition mansouri
UML Part 6 diagramme etat transition mansouri
 
UML Part 5- diagramme d'activités mansouri
UML Part 5- diagramme d'activités mansouriUML Part 5- diagramme d'activités mansouri
UML Part 5- diagramme d'activités mansouri
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
 
UML Part 3- diagramme de séquences mansouri
UML Part 3- diagramme de séquences mansouriUML Part 3- diagramme de séquences mansouri
UML Part 3- diagramme de séquences mansouri
 
UML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriUML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouri
 
UML Part1-Introduction Mansouri
UML Part1-Introduction MansouriUML Part1-Introduction Mansouri
UML Part1-Introduction Mansouri
 
Systèmes d'Information dans les organisations
Systèmes d'Information dans les organisationsSystèmes d'Information dans les organisations
Systèmes d'Information dans les organisations
 
Analyse merise Prof. Khalifa MANSOURI
Analyse merise Prof. Khalifa MANSOURIAnalyse merise Prof. Khalifa MANSOURI
Analyse merise Prof. Khalifa MANSOURI
 

Dernier

Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union
 
Proyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de pazProyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de paz
Morzadec Cécile
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
frizzole
 
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
MustaphaZhiri
 
Presentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechniquePresentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechnique
mohammadaminejouini
 
BATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en FranceBATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en France
Txaruka
 
Textes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdfTextes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdf
Michel Bruley
 

Dernier (7)

Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
 
Proyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de pazProyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de paz
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
 
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
Dimensionnement réseau de transmission pour un réseau GSM-R - AIT KADDOUR Ghi...
 
Presentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechniquePresentation powerpoint sur la filiere electrotechnique
Presentation powerpoint sur la filiere electrotechnique
 
BATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en FranceBATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en France
 
Textes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdfTextes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdf
 

Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI

  • 1. Structures de données 1 Piles et Files En utilisant les listes chainées Prof. M. Khalifa MANSOURI Université Hassan II de Casablanca ENSET de Mohammedia Département Mathématiques et Informatique
  • 3. Les piles 3 Une pile (stack en anglais) est une structure dynamique dans laquelle l'insertion ou la suppression d'un élément s‘effectue toujours à partir de la même extrémité de cette structure. Cette extrémité est appelée le sommet de la pile. Définition
  • 4. Les piles 4 Une pile permet de modéliser un système régi par le mécanisme « dernier arrivé premier sorti » : (Lifo : last in, first out). Principe de LIFO • L'action pour ajouter un nouvel élément au sommet de la pile s'appelle Empiler • L’action pour retirer l‘élément situé au sommet de la pile s'appelle Dépiler
  • 5. Les application des piles 5 De nombreuse applications s'appuient sur l'utilisation d'une pile, on peut citer : • Dans un navigateur web, une pile sert à mémoriser les pages Web visitées. • L'adresse de chaque nouvelle page visitée est empilée et l'utilisateur dépile • l'adresse de la page précédente en cliquant le bouton « Afficher la page précédente ». • L‘évaluation des expressions mathématiques en notation post-fixée (ou polonaise inverse) utilise une pile. • La fonction « Annuler la frappe » (en anglais « Undo ») d'un traitement de texte mémorise les modifications apportées au texte dans une pile. • Vérification de parenthèse d'une chaine de caractères ; • La récursivité (une fonction qui fait appel a elle même) ; • etc.… Utilisation
  • 6. Les application des piles 6 Ajouter dans cet ordre A EB D FCA B C D E F Pile Exemple de Pile (1)
  • 7. Les application des piles 7 A B C D E F Pile Exemple de Pile (2)
  • 10. Implémentation d’une pile 1 Représentation d'une Pile Représentation contiguë (par tableau) : Les éléments de la pile sont rangés dans un tableau Un entier représente la position du sommet de la pile Représentation chaînée (par pointeurs) : Les éléments de la pile sont chaînés entre eux Un pointeur sur le premier élément désigne la pile et représente le sommet de cette pile Une pile vide est représentée par le pointeur NULL
  • 11. Implémentation d’une pile 1 On peut implémenter une pile à l’aide de la même structuration qu’une liste chainée e1 e2 e3 e4@ @ @ NULL *P @
  • 12. Implémentation d’une pile 1 Pile chaînée p Pile 10 20 50 Sommet de la pile pointée par p Cellule contenant la valeur 5 Pointeur sur cellule suivante Pointeur NULL
  • 13. Implémentation d’une pile 1 Syntaxe pour définir la structure de la pile //Définir la structure cellule typedef struct Element { int info ; //le champ info peut avoir n'importe quel type struct Element *suiv ; //pointeur contenant l'adresse de l’élément suivant } Element; Déclaration d’une pile Element pile; // En utilisant une variable statique Element *pile; // En utilisant une variable dynamique
  • 14. Opérations sur une pile 1 Voici les primitives communément utilisées : 1. Element *PileVide() : créer une pile vide 2. int EstVide(Element *p) : renvoie vrai si la pile est vide, faux sinon ; 3. Type Sommet(Element *p) : renvoie l‘élément sommet de type Type de la pile P ; 4. Element* Empiler(Element *p,Type v) : ajoute au sommet de la pile P l’élément v de type Type; 5. Element* Depiler(Element *P) : supprime de la pile P le sommet.
  • 15. Implémentation d’une pile 1 Element PileVide() Element PileVide() { return(NULL) ; }
  • 16. Implémentation d’une pile 1 int EstVide() int EstVide(Element *pile) { if(pile==NULL) return (1) ; else return (0) ; } Dans la suite on considère que Type est entier
  • 17. Implémentation d’une pile 1 sommet(P) int sommet(Element *p) { if(p==NULL) printf("pile vide!"); else return p->info; }
  • 18. Implémentation d’une pile 1 Element empiler() Element Empiler(Element *P,int v) { Element *nouv ; nouv =(Element*)malloc(sizeof(Element)) ; nouv ->info=v ; nouv ->suiv=p ; return(nouv) ; }
  • 19. Implémentation d’une pile 1 Element depiler(Element *p) Element Depiler(Element *P) { Element *c = p ; if(c==NULL) return(NULL) ; else { p = p -> suiv ; free(c) ; return(p) ; } }
  • 21. Les Files 2 Une File (queue en anglais ) est une structure de données dans laquelle l'insertion se fait à la fin et la suppression d'un élément s'effectue à partir de début de cette structure. Le fonctionnement ressemble à une file d'attente : les premières personnes arrivées, se sont les premières personnes à servir. Définition
  • 22. Les files 2 Une file permet de modéliser un système régi par le mécanisme "premier arrivé premier sorti" ; on dit souvent FIFO (First in, First out) Principe de FIFO •L'action pour ajouter un nouvel élément s'appelle Enfiler •L'action pour retirer l‘élément situe au début de la File s'appelle Défiler
  • 24. Les application des files 2 Ajouter dans cet ordre A EB D FCA B C D E F Exemple de File (1) Fil e
  • 25. Les application des files 2 A EB D FC Exemple de File (2) File
  • 26. Les application des files 2 • En général, on utilise des files pour mémoriser temporairement des transactions qui doivent attendre pour être traitées ; • Les serveurs d'impression, qui doivent traiter les requêtes dans l'ordre dans lequel elles arrivent, et les insèrent dans une file d'attente ( ou une queue) ; • Certains moteurs multitâches, dans un système d'exploitation, qui doivent accorder du temps-machine a chaque tâche, sans en privilégier aucune ; • Un algorithme de parcours en largeur utilise une file pour mémoriser les nœuds visités ; • On utilise aussi des files pour créer toutes sortes de mémoires tampons (en anglais buffers). • etc.… Utilisation
  • 29. Les application des files 2 Représentation d'une File Représentation contiguë (par tableau) : Les éléments de la file sont rangés dans un tableau Deux entiers représentent respectivement les positions de la tête et de la queue de la file Représentation chaînée (par pointeurs) : Les éléments de la file sont chaînés entre eux Un pointeur sur le premier élément désigne la file et représente la tête de cette file Un pointeur sur le dernier élément représente la queue de file Une file vide est représentée par le pointeur NULL
  • 30. Implémentation d’une file 3 On peut implémenter une file à l’aide de la même structuration qu’une liste chainée e1 e2 e3 e4@ @ @ NULL *premier @ *dernier @ Et on mémorise le premier et le dernier élément
  • 31. Les application des files 3 File chaînée tete File 10 20 50 Tête de la file pointée par tete Cellule contenant la valeur 30 Pointeur sur cellule suivante Pointeur NULLqueue Queue de file pointée par queue
  • 32. Implémentation d’une File 3 Syntaxe pour définir la structure de la File //Définir la structure cellule typedef struct Element { int info ; //le champ info peut avoir n'importe quel type struct Element *suiv ; //pointeur contenant l'adresse de l’élément suivant } Element; //Définir la structure File typedef struct File { Element *premier; Element *dernier; } File;
  • 33. Implémentation d’une file 3 Déclaration d’une file File file; // En utilisant une variable statique File *file; // En utilisant une variable dynamique
  • 34. Opérations sur une file 3 Voici les primitives communément utilisées : 1. File FileVide(File F) : créer une file vide 2. int EstVide(File F) : renvoie vrai si la file est vide, faux sinon ; 3. Type PremierElement(File F) : renvoie le premier élément de type Type de la File F; 4. File Emfiler(File F,Type v) : ajoute à la fin de la file F l’élément v de type Type; 5. File Defiler(File F) : supprime de la file F le premier élément.
  • 35. Implémentation d’une file 3 File FileVide() File FileVide() { File F ; F.premier = NULL ; ; F.Dernier = NULL ; return(F) ; }
  • 36. Implémentation d’une file 3 int EstVide() int EstVide(File F) { if(F.premier==NULL) return (1) ; else return (0) ; } Dans la suite on considère que Type est entier
  • 37. Implémentation d’une file 3 int premierElement(File F) int premierElement(File F) { if(Estvide(F) printf("file vide!"); else return F.premier->info; }
  • 38. Implémentation d’une file 3 Emfiler() File Emfiler(File F,int v) { Element *nouv ; nouv =(Element*)malloc(sizeof(Element)) ; nouv ->info=v ; nouv ->suiv=NULL ; If Estvide(F) { F.premier=nouv; F.dernier=nouv; } else { F.dernier->suivant=nouv; F.dernier=nouv; } return(F) ; }
  • 39. Implémentation d’une file 3 Element defiler(File F) File Defiler(File F) { Element *c; If estvide(F) { Printf("file vide!"); return(NULL) ; } else { c=F->premier ; F->premier=F->premier->suivant; free(c) ; return(F) ; } }