SlideShare uma empresa Scribd logo
1 de 26
LOGO
Soltana Ghanem : sultana.ghanem@gmail.com
1ère année IAG
2009 - 2010
Institut Supérieur
de Gestion de Tunis
Objectifs
être capable de choisir la structure adéquate à chaque
problème
connaître les structures de données linéaires
pouvoir implémenter les structures de données
linéaires
connaître les avantages et inconvénients
de chaque structure
connaître l’utilité des structures de données
L’étudiant devra :
2
Références
 Michel Divay : Algorithmes et structures de données
génériques
 Abdelali Guerid, Pierre Breguet, Henri Röthlisberger :
Algorithmes et structures de données avec C++ et Java
 Cours Pr. Nahla Ben Amor : Algorithmes et structures de
données, http://isgprog2.ifrance.com/
3
Plan
4
Définitions1
Structures de données linéaires2
Exercice33
Tableau contiguë
Liste chainée
File
Pile
Définitions
5
C’est un programme écrit
avec un langage naturelAlgorithme
C’est une structure logique destinée à contenir des
données, afin de leur donner une organisation
permettant de simplifier leur traitement
Structure
de données
Définitions
6
Mise en situation :
Vous voulez créer une application qui calcule votre
moyenne (6 matières)
Vous décidez de créer 12 variables qui serviront à
contenir vos notes : mat1_exam, mat2_exam..
On vous demande de réaliser une application qui calcule la
moyenne de tout les étudiants de ta classe (40)
 Vous allez définir et gérer manuellement 40 * 12 variables!
Tableau contiguë
7
Un tableau est un ensemble de cellules contigües visant
à contenir des données homogènes
Un tableau est caractérisé par :
• Un nom
• Une taille physique
• Le type des données qu’il va contenir
Tableau contiguë
8
12 7 8 18 3T =
Indice 21 3 4 5
Exemple :
• Pour récupérer la valeur d’une case :
Nom_du_tableau [ indice ]  T[4] contient la valeur 18
• Pour modifier une case :
Nom_du_tableau [ indice ] = Valeur  T[2] = 200
12 200 8 18 3
21 3 4 5
Tableau contiguë
9
Manipulation des tableaux contigües :
Suppression
Taille () : entier= une fonction qui retourne la taille logique du
tableau
• A la création du tableau, initialisez la variable taille 0
• Si une opération d’ajout est effectuée avec succès, alors taille  taille +1
• Si une opération de suppression est effectuée avec succès, alors taille taille -
1
Récupérer ( indice : entier ) : Objet = fonction qui retourne l’élément se
trouvant à la position indice
Pré condition :
• indice > 0 et indice <= taille ()
Traitement : retourner ( tableau [ indice ] )
Tableau contiguë
10
Ajouter ( élément : objet , indice : entier ) : booléenne = fonction qui
ajoute l’élément dans le tableau à la position indice
Pré condition :
• taille() < taille physique
• indice > 0 et indice <= taille () + 1
• élément à ajouter doit être de même type que les
éléments contenus dans le tableau
12 7 8 18 3
Ajouter ( 200 , 3 )
21 3 4 5
12 7 8 8 18 3
12 7 200 8 18 3
21 3 4 5
21 3 4 5 6
Tableau contiguë
11
Supprimer ( indice : entier ) : booléenne = fonction qui supprime
l’élément se trouvant à la position indice
Pré condition :
• indice > 0 et indice <= taille ()
Supprimer ( 3 )
12 7 200 8 18
21 3 4 5
12 7 8 8 18
21 3 4 5
12 7 8 18 18
21 3 4 5
L’élément d’indice 5 sera toujours présent mais l’décrémentation de la
taille le rendra inaccessible .
Tableau contiguë
12
InconvénientsAvantages
Simple à implémenter
et à manipuler
Accès directe aux
données
On doit définir la taille
maximale au préalable
L’espace mémoire doit
être contiguë
Utilisation non optimisée
de la mémoire
Ajout et suppression en
fin de tableau en O(1)
Liste chainée
13
Une liste chainée est un ensemble
de nœuds reliés entre eux
Une liste peut être caractériser par un nœud
tête. Ce dernier sera le point de départ pour
retrouver tous les autres nœuds
Un nœud est une entité renfermant de
l’information et ayant un pointeur sur le
nœud qui la suit
LISTE
Nœud
Implémentation
Liste chainée
14
12 7 8 18 3
Nœud
Pointeur
Tête de liste
suivant suivant
Exemple :
• la tête de liste représente le point d’accès à la liste
• Chaque nœud :
• Renferme une information
• Indique l’emplacement du prochain nœud
• Le dernier nœud ne pointe vers rien (null)
Liste chainée
15
Ajout : cas 1 : à la première position
12 7 8 18 3
22
12 7 8 18 322
Liste chainée
16
Ajout : cas 2 à la nième position
12 7 8 18 3
22
12 7 8 22 18 3
Liste chainée
17
Suppression: cas 1 : de la tête de liste
12 7 8 18 3
7 8 22 18 3
Il est préférable d’optimiser
la gestion de mémoire !!
Liste chainée
18
Suppression: cas 2 : suppression d’un élément autre que la tête de liste
12 7 8 18 3
12 7 18 3
À supprimer
Liste chainée
19
InconvénientsAvantages
Meilleur utilisation de la
mémoire
Toutes les opérations Sur
la tête de liste sont en O(1)
L’accès aux données
est plus couteux O(n)
Ajout à la fin de liste
en O(n)
L’espace mémoire ne doit
pas être contiguë
La taille de la liste peut ne
pas être définie au préalable
Gestion des
pointeurs
File
20
Une file (Queue) est un type particulier de liste, où les
éléments sont insérés en queue et supprimer en tête
Le nom vient des files d’attente, où le premier arrivé est
le premier servi : FIFO (First In First Out )
Les files sont d’un usage très répondus dans la
programmation des système d’exploitation : gestion des
processus, gestion des imprimantes…
File
21
Exemple :
Un nouveau venu
Point de sorite
12 7 8 18 3
14
1 2 3 4 5
Station de traitement
• Seul le premier élément peut quitter la file
• Les nouveaux éléments sont ajoutés à la fin de la file
File
22
Implémentation
Puisque les Files sont des cas particuliers de listes pourquoi ne pas
utiliser ces dernières pour les implémenter ?
Doit-on utiliser les tableaux contigües ou les listes chainées?
Liste doublement chainée !!
Enfiler ( élément )  revient à faire ajouter ( élément, taille ()+1 )
Défiler ( )  revient à faire supprimer (1)
Pile
23
Une pile (stack) représente une séquences d’éléments
accessibles par une seule extrémité appelée sommet
La stratégie de gestion d’une pile est : dernier arrivé,
premier servi : LIFO ( Last In First Out )
Les opérations de mise à jour (insertion et suppression),
d’après la définition, sont seulement appliquées sur le
sommet
Pile
24
12
7
8
18
3
Exemple :
Base
Sommet Je vois mieux
maintenant !!
• Le sommet de la pile est le seul élément manipulable
• Pour manipuler un élément se trouvant au milieu de la pile il faudra
dépiler tout ces prédécesseurs
•Si on ajoute un nouvel élément il serra empiler au dessus du sommet
Pile
25
Doit-on utiliser les tableaux contigües ou les listes chainées?
Tableau contiguë !!
Empiler ( élément )  revient à faire ajouter ( élément, taille () +1 )
Dépiler ( )  revient à faire supprimer (taille () )
Sommet ( )  revient à faire récupérer ( taille () )
Les piles sont utilisées pour gérer les appels récursifs !!!!
liste chainée !!
Exercice : Quiz
26
Quel est la structure de données linéaire la plus adéquate
à chaque problème?
1 La gestion d’une équipe de football
2 La gestion des demandes de location de voitures
Le problème des tours de Hanoï33
44 La gestion des clients d’une banque
Tableau contiguë
File
Pile
Liste chainée

Mais conteúdo relacionado

Mais procurados

Fonction Excel
Fonction ExcelFonction Excel
Fonction ExcelHouda001
 
INF220 - Algo DUT SRC1 - Cours 2
INF220 - Algo DUT SRC1 - Cours 2INF220 - Algo DUT SRC1 - Cours 2
INF220 - Algo DUT SRC1 - Cours 2PGambette
 
Programming language python 2021
Programming language python 2021Programming language python 2021
Programming language python 2021Dalila Chouaya
 
Chapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En JavaChapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En JavaAziz Darouichi
 
10 chapitre 4 listes et récursivité
10 chapitre 4 listes et récursivité10 chapitre 4 listes et récursivité
10 chapitre 4 listes et récursivitéSiham Rim Boudaoud
 
WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013Zenika
 

Mais procurados (10)

Marzouk collection-map
Marzouk collection-mapMarzouk collection-map
Marzouk collection-map
 
Fonction Excel
Fonction ExcelFonction Excel
Fonction Excel
 
INF220 - Algo DUT SRC1 - Cours 2
INF220 - Algo DUT SRC1 - Cours 2INF220 - Algo DUT SRC1 - Cours 2
INF220 - Algo DUT SRC1 - Cours 2
 
Programming language python 2021
Programming language python 2021Programming language python 2021
Programming language python 2021
 
Theme 7
Theme 7Theme 7
Theme 7
 
Chapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En JavaChapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En Java
 
Chapitre 3 et 4
Chapitre 3 et 4Chapitre 3 et 4
Chapitre 3 et 4
 
Initiation r
Initiation rInitiation r
Initiation r
 
10 chapitre 4 listes et récursivité
10 chapitre 4 listes et récursivité10 chapitre 4 listes et récursivité
10 chapitre 4 listes et récursivité
 
WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013
 

Semelhante a Algorithm et structure de donnée

Structure des données complexes . pptx .
Structure des données complexes . pptx .Structure des données complexes . pptx .
Structure des données complexes . pptx .MeriemKeddad
 
mis
mismis
misISIG
 
presentaiopn PFE.pptx
presentaiopn PFE.pptxpresentaiopn PFE.pptx
presentaiopn PFE.pptxallagahamza
 
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 javaAmir Souissi
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésLilia Sfaxi
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETLLilia Sfaxi
 
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
 
Comment utiliser microsoft Excel ? Guide Complet et Conseils Pratiques ( Oui)
Comment utiliser microsoft Excel ? Guide Complet et Conseils Pratiques ( Oui)Comment utiliser microsoft Excel ? Guide Complet et Conseils Pratiques ( Oui)
Comment utiliser microsoft Excel ? Guide Complet et Conseils Pratiques ( Oui)mar yame
 

Semelhante a Algorithm et structure de donnée (20)

Type abstrait de données
Type abstrait de donnéesType abstrait de données
Type abstrait de données
 
Structure des données complexes . pptx .
Structure des données complexes . pptx .Structure des données complexes . pptx .
Structure des données complexes . pptx .
 
Chapitre05 : Les tableaux
Chapitre05 : Les tableauxChapitre05 : Les tableaux
Chapitre05 : Les tableaux
 
Structures donneenew
Structures donneenewStructures donneenew
Structures donneenew
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
mis
mismis
mis
 
presentaiopn PFE.pptx
presentaiopn PFE.pptxpresentaiopn PFE.pptx
presentaiopn PFE.pptx
 
Chapitre3 tableauxcpp
Chapitre3 tableauxcppChapitre3 tableauxcpp
Chapitre3 tableauxcpp
 
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
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETL
 
TAD (1).pptx
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
 
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
 
ch4_les listes.pdf
ch4_les listes.pdfch4_les listes.pdf
ch4_les listes.pdf
 
Cours listesdiapo
Cours listesdiapoCours listesdiapo
Cours listesdiapo
 
Cours listes
Cours listesCours listes
Cours listes
 
Comment utiliser microsoft Excel ? Guide Complet et Conseils Pratiques ( Oui)
Comment utiliser microsoft Excel ? Guide Complet et Conseils Pratiques ( Oui)Comment utiliser microsoft Excel ? Guide Complet et Conseils Pratiques ( Oui)
Comment utiliser microsoft Excel ? Guide Complet et Conseils Pratiques ( Oui)
 
Rapport open erp
Rapport open erpRapport open erp
Rapport open erp
 

Algorithm et structure de donnée

  • 1. LOGO Soltana Ghanem : sultana.ghanem@gmail.com 1ère année IAG 2009 - 2010 Institut Supérieur de Gestion de Tunis
  • 2. Objectifs être capable de choisir la structure adéquate à chaque problème connaître les structures de données linéaires pouvoir implémenter les structures de données linéaires connaître les avantages et inconvénients de chaque structure connaître l’utilité des structures de données L’étudiant devra : 2
  • 3. Références  Michel Divay : Algorithmes et structures de données génériques  Abdelali Guerid, Pierre Breguet, Henri Röthlisberger : Algorithmes et structures de données avec C++ et Java  Cours Pr. Nahla Ben Amor : Algorithmes et structures de données, http://isgprog2.ifrance.com/ 3
  • 4. Plan 4 Définitions1 Structures de données linéaires2 Exercice33 Tableau contiguë Liste chainée File Pile
  • 5. Définitions 5 C’est un programme écrit avec un langage naturelAlgorithme C’est une structure logique destinée à contenir des données, afin de leur donner une organisation permettant de simplifier leur traitement Structure de données
  • 6. Définitions 6 Mise en situation : Vous voulez créer une application qui calcule votre moyenne (6 matières) Vous décidez de créer 12 variables qui serviront à contenir vos notes : mat1_exam, mat2_exam.. On vous demande de réaliser une application qui calcule la moyenne de tout les étudiants de ta classe (40)  Vous allez définir et gérer manuellement 40 * 12 variables!
  • 7. Tableau contiguë 7 Un tableau est un ensemble de cellules contigües visant à contenir des données homogènes Un tableau est caractérisé par : • Un nom • Une taille physique • Le type des données qu’il va contenir
  • 8. Tableau contiguë 8 12 7 8 18 3T = Indice 21 3 4 5 Exemple : • Pour récupérer la valeur d’une case : Nom_du_tableau [ indice ]  T[4] contient la valeur 18 • Pour modifier une case : Nom_du_tableau [ indice ] = Valeur  T[2] = 200 12 200 8 18 3 21 3 4 5
  • 9. Tableau contiguë 9 Manipulation des tableaux contigües : Suppression Taille () : entier= une fonction qui retourne la taille logique du tableau • A la création du tableau, initialisez la variable taille 0 • Si une opération d’ajout est effectuée avec succès, alors taille  taille +1 • Si une opération de suppression est effectuée avec succès, alors taille taille - 1 Récupérer ( indice : entier ) : Objet = fonction qui retourne l’élément se trouvant à la position indice Pré condition : • indice > 0 et indice <= taille () Traitement : retourner ( tableau [ indice ] )
  • 10. Tableau contiguë 10 Ajouter ( élément : objet , indice : entier ) : booléenne = fonction qui ajoute l’élément dans le tableau à la position indice Pré condition : • taille() < taille physique • indice > 0 et indice <= taille () + 1 • élément à ajouter doit être de même type que les éléments contenus dans le tableau 12 7 8 18 3 Ajouter ( 200 , 3 ) 21 3 4 5 12 7 8 8 18 3 12 7 200 8 18 3 21 3 4 5 21 3 4 5 6
  • 11. Tableau contiguë 11 Supprimer ( indice : entier ) : booléenne = fonction qui supprime l’élément se trouvant à la position indice Pré condition : • indice > 0 et indice <= taille () Supprimer ( 3 ) 12 7 200 8 18 21 3 4 5 12 7 8 8 18 21 3 4 5 12 7 8 18 18 21 3 4 5 L’élément d’indice 5 sera toujours présent mais l’décrémentation de la taille le rendra inaccessible .
  • 12. Tableau contiguë 12 InconvénientsAvantages Simple à implémenter et à manipuler Accès directe aux données On doit définir la taille maximale au préalable L’espace mémoire doit être contiguë Utilisation non optimisée de la mémoire Ajout et suppression en fin de tableau en O(1)
  • 13. Liste chainée 13 Une liste chainée est un ensemble de nœuds reliés entre eux Une liste peut être caractériser par un nœud tête. Ce dernier sera le point de départ pour retrouver tous les autres nœuds Un nœud est une entité renfermant de l’information et ayant un pointeur sur le nœud qui la suit LISTE Nœud Implémentation
  • 14. Liste chainée 14 12 7 8 18 3 Nœud Pointeur Tête de liste suivant suivant Exemple : • la tête de liste représente le point d’accès à la liste • Chaque nœud : • Renferme une information • Indique l’emplacement du prochain nœud • Le dernier nœud ne pointe vers rien (null)
  • 15. Liste chainée 15 Ajout : cas 1 : à la première position 12 7 8 18 3 22 12 7 8 18 322
  • 16. Liste chainée 16 Ajout : cas 2 à la nième position 12 7 8 18 3 22 12 7 8 22 18 3
  • 17. Liste chainée 17 Suppression: cas 1 : de la tête de liste 12 7 8 18 3 7 8 22 18 3 Il est préférable d’optimiser la gestion de mémoire !!
  • 18. Liste chainée 18 Suppression: cas 2 : suppression d’un élément autre que la tête de liste 12 7 8 18 3 12 7 18 3 À supprimer
  • 19. Liste chainée 19 InconvénientsAvantages Meilleur utilisation de la mémoire Toutes les opérations Sur la tête de liste sont en O(1) L’accès aux données est plus couteux O(n) Ajout à la fin de liste en O(n) L’espace mémoire ne doit pas être contiguë La taille de la liste peut ne pas être définie au préalable Gestion des pointeurs
  • 20. File 20 Une file (Queue) est un type particulier de liste, où les éléments sont insérés en queue et supprimer en tête Le nom vient des files d’attente, où le premier arrivé est le premier servi : FIFO (First In First Out ) Les files sont d’un usage très répondus dans la programmation des système d’exploitation : gestion des processus, gestion des imprimantes…
  • 21. File 21 Exemple : Un nouveau venu Point de sorite 12 7 8 18 3 14 1 2 3 4 5 Station de traitement • Seul le premier élément peut quitter la file • Les nouveaux éléments sont ajoutés à la fin de la file
  • 22. File 22 Implémentation Puisque les Files sont des cas particuliers de listes pourquoi ne pas utiliser ces dernières pour les implémenter ? Doit-on utiliser les tableaux contigües ou les listes chainées? Liste doublement chainée !! Enfiler ( élément )  revient à faire ajouter ( élément, taille ()+1 ) Défiler ( )  revient à faire supprimer (1)
  • 23. Pile 23 Une pile (stack) représente une séquences d’éléments accessibles par une seule extrémité appelée sommet La stratégie de gestion d’une pile est : dernier arrivé, premier servi : LIFO ( Last In First Out ) Les opérations de mise à jour (insertion et suppression), d’après la définition, sont seulement appliquées sur le sommet
  • 24. Pile 24 12 7 8 18 3 Exemple : Base Sommet Je vois mieux maintenant !! • Le sommet de la pile est le seul élément manipulable • Pour manipuler un élément se trouvant au milieu de la pile il faudra dépiler tout ces prédécesseurs •Si on ajoute un nouvel élément il serra empiler au dessus du sommet
  • 25. Pile 25 Doit-on utiliser les tableaux contigües ou les listes chainées? Tableau contiguë !! Empiler ( élément )  revient à faire ajouter ( élément, taille () +1 ) Dépiler ( )  revient à faire supprimer (taille () ) Sommet ( )  revient à faire récupérer ( taille () ) Les piles sont utilisées pour gérer les appels récursifs !!!! liste chainée !!
  • 26. Exercice : Quiz 26 Quel est la structure de données linéaire la plus adéquate à chaque problème? 1 La gestion d’une équipe de football 2 La gestion des demandes de location de voitures Le problème des tours de Hanoï33 44 La gestion des clients d’une banque Tableau contiguë File Pile Liste chainée