SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
DUT SRC – IUT de Marne-la-Vallée
          15/02/2012
    INF220 - Algorithmique




        Cours 2
    Listes et arbres




                                   Philippe Gambette
Résumé de l'épisode précédent
• Récursivité
Un algorithme récursif = un algorithme qui s'appelle lui-même
On suppose que :
    * on sait construire/calculer le premier objet (initialisation)
    * à partir du (n-1)-ième objet on sait construire/calculer le n-ième (hérédité)
alors on arrive à construire/calculer tous les objets.
             algo(param1)   sortie de
                                           algo(param2)   sortie de
                                                                         algo(param3)
                            algo(param2)                  algo(param3)
• Tri
Pour ranger un ensemble d'éléments tous comparables deux à deux selon un
certain ordre.
Cas de base : tri d'un tableau d'entiers pour l'ordre ≤
Plusieurs algorithmes possibles :     - tri par sélection (cours)         plus ou moins
                                      - tri à bulles (cours + TD3)        rapide... compter
                                      - tri par insertion (TD3)           le nombre de
                                      - ...                               comparaisons
Sources

 • Cours de Jean-François Berdjugin à l'IUT de Grenoble
 http://berdjugin.com/enseignements/inf/inf220/
 • Cours de Xavier Heurtebise à l'IUT de Provence
 http://x.heurtebise.free.fr
 • Le livre de Java premier langage, d'A. Tasso
 • http://xkcd.com, http://xkcd.free.fr
Plan des cours du semestre

 • Listes
 • Piles et files
 • Arbres
Plan des cours du semestre

 • Listes
 • Piles et files
 • Arbres
Intérêt des listes

 Le problème des tableaux :
 - taille fixe
 - insertion “difficile” d'un élément
 - suppression “difficile” d'un élément
Intérêt des listes

 L'intérêt des listes :
 - taille variable
 - insertion facile d'un élément
 - suppression facile d'un élément
 Mais :
 - accès “difficile” au i-ième élément
Définition récursive d'une liste “simplement chaînée”

 Une liste “simplement chaînée” est :
 - soit une liste vide                  - soit une première case qui contient
                                        une valeur, et qui pointe vers une liste
Définition récursive d'une liste d'entiers

 Une liste d'entiers est :
 - soit une liste vide        - soit une première case qui contient un
                              entier, et qui pointe vers une liste
                              d'entiers
Définition illustrée d'une liste d'entiers

 Une liste d'entiers est :
 - soit une liste vide        - soit une première case qui contient un
                              entier, et qui pointe vers une liste
                              d'entiers

      NULL                     5         6
Définition illustrée d'une liste d'entiers

 Une liste d'entiers est :
 - soit une liste vide                 - soit une première case qui contient un
                                       entier, et qui pointe vers une liste
                                       d'entiers

      NULL                               5            6




 Liste “simplement chaînée” : la chaîne d'une ancre
 Quand l'ancre est jetée et toute la chaîne déroulée, on a facilement
 accès au premier maillon (sur le bateau). Pour les suivants il faut
 remonter l'ancre.
 Quand on a un maillon sous les yeux on peut facilement le supprimer
 (le casser et accrocher le précédent au suivant), en insérer un...

                                                 Source image : http://virginiejmr.free.fr/serie_salle_de_bain.htm
Définition illustrée d'une liste d'entiers

 Une liste d'entiers est :
 - soit une liste vide        - soit une première case qui contient un
                              entier, et qui pointe vers une liste
                              d'entiers

       NULL                    5          6



  L1                           L2

  L1 ← NULL                    L2 ← creeListe(5,creeListe(6, NULL))
Définition illustrée d'une liste d'entiers

 Une liste d'entiers est :
 - soit une liste vide          - soit une première case qui contient un
                                entier, et qui pointe vers une liste
                         NULL   d'entiers

       NULL                      5         6
                    L2

  L1     L3                     L2

  L1 ← NULL                     L2 ← creeListe(5,creeListe(6, NULL))
  L2 ← NULL
  L3 ← L1
Fonctions de base sur les listes

  Une liste d'entiers est :
  - soit une liste vide                        - soit une première case qui contient un
                                               entier, et qui pointe vers une liste
                                               d'entiers

       NULL                                     5           6



  L1                                           L2

  L1 ← NULL                                    L2 ← creeListe(5,creeListe(6, NULL))

Sur une liste L1 ou L2, on peut :
                                     si L2 est non vide :                si L2 est non vide :
• savoir si elle est vide :   • accéder à la valeur de      • accéder à la liste qui
L1 = NULL ?                   son premier élément :         commence à la case suivante :
                              tete(L2)                      suivant(L2)
Fonctions de base sur les listes

  Une liste d'entiers est :
  - soit une liste vide                        - soit une première case qui contient un
                                               entier, et qui pointe vers une liste
                                               d'entiers

       NULL                                     5           6



  L1                                           L2           L3

  L1 ← NULL                                    L2 ← creeListe(5,creeListe(6, NULL))

Sur une liste L1 ou L2, on peut :
                                     si L2 est non vide :                si L2 est non vide :
• savoir si elle est vide :   • accéder à la valeur de      • accéder à la liste qui
L1 = NULL ?                   son premier élément :         commence à la case suivante :
                              tete(L2) renvoie 5            suivant(L2) renvoie L3
Fonctions de base sur les listes

  Une liste d'entiers est :
  - soit une liste vide                        - soit une première case qui contient un
                                               entier, et qui pointe vers une liste
                                               d'entiers

       NULL                                     5           6



  L1                                           L2           L5
                                               L2 ← creeListe(5,creeListe(6, NULL))
  L1 ← NULL                                    L5 ← suivant(L2)

Sur une liste L1 ou L2, on peut :
                                     si L2 est non vide :                si L2 est non vide :
• savoir si elle est vide :   • accéder à la valeur de      • accéder à la liste qui
L1 = NULL ?                   son premier élément :         commence à la case suivante :
                              tete(L2) renvoie 5            suivant(L2)
Fonctions de base sur les listes

  Une liste d'entiers est :
  - soit une liste vide                        - soit une première case qui contient un
                                               entier, et qui pointe vers une liste
                                               d'entiers

       NULL                                     5           4



  L1                                           L2           L5
                                               L2 ← creeListe(5,creeListe(6, NULL))
  L1 ← NULL                                    L5 ← suivant(L2)
                                               tete(L5) ← 4
Sur une liste L1 ou L2, on peut :
                                     si L2 est non vide :                si L2 est non vide :
• savoir si elle est vide :   • accéder à la valeur de      • accéder à la liste qui
L1 = NULL ?                   son premier élément :         commence à la case suivante :
                              tete(L2) renvoie 5            suivant(L2)
Fonctions de base sur les listes

  Une liste d'entiers est :
  - soit une liste vide                        - soit une première case qui contient un
                                               entier, et qui pointe vers une liste
                                               d'entiers

       NULL                                     5           4



  L1                                           L2           L5   L3
                                               L2 ← creeListe(5,creeListe(6, NULL))
  L1 ← NULL                                    L5 ← suivant(L2)
                                               tete(L5) ← 4
Sur une liste L1 ou L2, on peut :
                                     si L2 est non vide :                si L2 est non vide :
• savoir si elle est vide :   • accéder à la valeur de      • accéder à la liste qui
L1 = NULL ?                   son premier élément :         commence à la case suivante :
                              tete(L2) renvoie 5            suivant(L2) renvoie L3
Premières fonctions sur les listes

 Modification de l'élément en tête d'une liste
 Ecrire l'algorithme remplaceTete qui prend en entrée une liste d'entiers L et un
 entier a, et renvoie la liste L dont le premier élément est remplacé par a

  Algorithme remplaceTete                  2         5          6
  Entrées : liste d'entiers L, entier a
  Type de sortie : liste d'entiers
  Début                                    L




  Fin
Premières fonctions sur les listes

 Modification de l'élément en tête d'une liste
 Ecrire l'algorithme remplaceTete qui prend en entrée une liste d'entiers L et un
 entier a, et renvoie la liste L dont le premier élément est remplacé par a

  Algorithme remplaceTete                  2         5          6
  Entrées : liste d'entiers L, entier a
  Type de sortie : liste d'entiers
  Début                                    L

                                          remplaceTete(L,5) :
                                           5         5          6



                                           L

  Fin
Premières fonctions sur les listes

 Modification de l'élément en tête d'une liste
 Ecrire l'algorithme remplaceTete qui prend en entrée une liste d'entiers L et un
 entier a, et renvoie la liste L dont le premier élément est remplacé par a

  Algorithme remplaceTete                  2         5          6
  Entrées : liste d'entiers L, entier a
  Type de sortie : liste d'entiers
  Début                                    L
      …
      tete(L) ← a                         remplaceTete(L,5) :
      renvoyer L
                                           5         5          6
      ...
  Fin

                                           L
Premières fonctions sur les listes

 Modification de l'élément en tête d'une liste
 Ecrire l'algorithme remplaceTete qui prend en entrée une liste d'entiers L et un
 entier a, et renvoie la liste L dont le premier élément est remplacé par a

  Algorithme remplaceTete                   2         5          6
  Entrées : liste d'entiers L, entier a
  Type de sortie : liste d'entiers
  Début                                     L
      …
      tete(L) ← a                          remplaceTete(L,5) :
      renvoyer L
                                            5         5          6
      ...
  Fin
                         L'
  ne fonctionne pas sur la liste vide L'    L
Premières fonctions sur les listes

 Modification de l'élément en tête d'une liste
 Ecrire l'algorithme remplaceTete qui prend en entrée une liste d'entiers L et un
 entier a, et renvoie la liste L dont le premier élément est remplacé par a

  Algorithme remplaceTete                     2        5          6
  Entrées : liste d'entiers L, entier a
  Type de sortie : liste d'entiers
  Début                                       L
      si L ≠ NULL alors :
            tete(L) ← a                     remplaceTete(L,5) :
      Fin Si
                                              5        5          6
      renvoyer L
  Fin

                                              L


  Facile pour les listes, facile pour les tableaux
Premières fonctions sur les listes

 Suppression de l'élément en tête d'une liste
 Par exemple, supprimer 5 au début de la liste L=creeListe(5,creeListe(6, NULL))


                                                5       6



                                                L
Premières fonctions sur les listes

 Suppression de l'élément en tête d'une liste
 Par exemple, supprimer 5 au début de la liste L=creeListe(5,creeListe(6, NULL))


                                                5       6



                                                L
Premières fonctions sur les listes

 Suppression de l'élément en tête d'une liste
 Par exemple, supprimer 5 au début de la liste L=creeListe(5,creeListe(6, NULL))


                                                5       6
        L ← suivant(L)

                                                L
Premières fonctions sur les listes

 Suppression de l'élément en tête d'une liste
 Par exemple, supprimer 5 au début de la liste L=creeListe(5,creeListe(6, NULL))


                                                   5      6
         L ← suivant(L)

                                                          L




  Facile pour les listes, “difficile” pour les tableaux
Premières fonctions sur les listes

 Insertion d'un élément en tête d'une liste
 Par exemple, insérer 2 au début de la liste L=creeListe(5,creeListe(6, NULL))


                                               5         6



                                               L
Premières fonctions sur les listes

 Insertion d'un élément en tête d'une liste
 Par exemple, insérer 2 au début de la liste L=creeListe(5,creeListe(6, NULL))


                                    2          5         6



                                               L
                  creeListe(2,L)
Premières fonctions sur les listes

 Insertion d'un élément en tête d'une liste
 Par exemple, insérer 2 au début de la liste L=creeListe(5,creeListe(6, NULL))


                                       2           5      6
         L ← creeListe(2,L)

                                       L           L




  Facile pour les listes, “difficile” pour les tableaux
Premières fonctions sur les listes

 Valeur du i-ième élément d'une liste
 Nécessite de parcourir la liste !
 Écrire la fonction valeur qui prend en entrée une liste d'entiers L et un entier i,
 et qui renvoie la valeur de la i-ième case de L, si elle existe, et -1 sinon.

  Algorithme valeur                          2          5            6
  Entrées : liste d'entiers L, entier i
  Type de sortie :
  Variables :
                                                     valeur(L,2) renvoie...
  Début                                      L




  Fin
Premières fonctions sur les listes

 Valeur du i-ième élément d'une liste
 Nécessite de parcourir la liste !
 Écrire la fonction valeur qui prend en entrée une liste d'entiers L et un entier i,
 et qui renvoie la valeur de la i-ième case de L, si elle existe, et -1 sinon.

  Algorithme valeur                          2          5            6
  Entrées : liste d'entiers L, entier i
  Type de sortie :
  Variables :
                                                     valeur(L,2) renvoie 5
  Début                                      L




  Fin
Premières fonctions sur les listes

 Valeur du i-ième élément d'une liste
 Nécessite de parcourir la liste !
 Écrire la fonction valeur qui prend en entrée une liste d'entiers L et un entier i,
 et qui renvoie la valeur de la i-ième case de L, si elle existe, et -1 sinon.

Algorithme valeur                                    2           5           6
Entrées : liste d'entiers L, entier i                                                   L3
Type de sortie : entier
Variables : entier resultat
Début                                                 L         L'          L2
     resultat ← -1
     Si L≠NULL alors :
            Si i=1 alors :
                   resultat ← tete(L)
            Sinon :
                   resultat ← valeur(suivant(L),i-1)
            Fin Si
     Fin Si
     renvoyer resultat
Fin                                        Facile pour les tableaux, “difficile” pour les listes
Premières fonctions sur les listes

 Valeur du i-ième élément d'une liste
 Nécessite de parcourir la liste !
 Écrire la fonction valeur qui prend en entrée une liste d'entiers L et un entier i,
 et qui renvoie la valeur de la i-ième case de L, si elle existe, et -1 sinon.

Algorithme valeur                                      2           5             6
Entrées : liste d'entiers L, entier i                                                       L3
Type de sortie : entier
Variables : entier resultat
Début                                                  L          L1            L2
     resultat ← -1
     Si L≠NULL alors :
                                                     Arbre d'exécution :
            Si i=1 alors :
                   resultat ← tete(L)                  6
                                                            valeur(L,3)               valeur(L2,1)
            Sinon :
                   resultat ← valeur(suivant(L),i-1)             6                         6
            Fin Si                                                       valeur(L1,2)
     Fin Si
     renvoyer resultat
Fin                                        Facile pour les tableaux, “difficile” pour les listes
Plan

 • Listes
 • Piles et files
 • Arbres
Files et piles

Files                       Piles
FIFO “First In First Out”   LIFO “Last In First Out”
File d'attente à la Poste   Pile de documents à travailler
Files et piles

Files                                                                        Piles
FIFO “First In First Out”                                                    LIFO “Last In First Out”
File d'attente à la Poste                                                    Pile de documents à travailler




                                                  Gestion des buffers



                                                                                                                                    activation de
                                                                                                                                   plusieurs sorts
                                                                                                                                    et effets à la
                                                                                                                                        suite


http://www.dessinateur.biz/blog/tag/file-dattente/                      http://fnhostile420.tumblr.com/post/1586779953/aporianonymous-i-have-a-to-do-pile
http://img.clubic.com/02989454-photo-cisco-crs3.jpg                                   http://imageshack.us/photo/my-images/268/magicthegatheringback.jpg/
Files et piles

Files                                                                        Piles
FIFO “First In First Out”                                                    LIFO “Last In First Out”
File d'attente à la Poste                                                    Pile de documents à travailler


                     Pourquoi utiliser ces structures de données ?
                     • Plus simple à programmer qu'une liste
                     • Fonctions plus limitées, adaptées aux besoins


                                                  Gestion des buffers



                                                                                                                                    activation de
                                                                                                                                   plusieurs sorts
                                                                                                                                    et effets à la
                                                                                                                                        suite


http://www.dessinateur.biz/blog/tag/file-dattente/                      http://fnhostile420.tumblr.com/post/1586779953/aporianonymous-i-have-a-to-do-pile
http://img.clubic.com/02989454-photo-cisco-crs3.jpg                                   http://imageshack.us/photo/my-images/268/magicthegatheringback.jpg/
Files et piles

Files                                                                        Piles
FIFO “First In First Out”                                                    LIFO “Last In First Out”
File d'attente à la Poste                                                    Pile de documents à travailler
Quatre fonctions :                                                           Quatre fonctions :
- créer : créer une file vide                                                - créer : créer une pile vide
- enfiler : ajouter un élément en fin de                                     - empiler : ajouter un élément en haut
file                                                                         de la pile
- défiler : lire la valeur de l'élément à la                                 - dépiler : lire la valeur de l'élément en
fin de la file en l'enlevant de la file                                      haut de la pile en l'enlevant de la pile
- tester si vide : savoir si la file est vide                                - tester si vide : savoir si la pile est vide
                                                  Gestion des buffers



                                                                                                                                    activation de
                                                                                                                                   plusieurs sorts
                                                                                                                                    et effets à la
                                                                                                                                        suite


http://www.dessinateur.biz/blog/tag/file-dattente/                      http://fnhostile420.tumblr.com/post/1586779953/aporianonymous-i-have-a-to-do-pile
http://img.clubic.com/02989454-photo-cisco-crs3.jpg                                   http://imageshack.us/photo/my-images/268/magicthegatheringback.jpg/
Files et piles
                                  implémentable avec liste                                                      implémentable avec liste
Files                                 doublement chaînée                     Piles                                  simplement chaînée
FIFO “First In First Out”                                                    LIFO “Last In First Out”
File d'attente à la Poste                                                    Pile de documents à travailler
Quatre fonctions :                                                           Quatre fonctions :
- créer : créer une file vide                                                - créer : créer une pile vide
- enfiler : ajouter un élément en fin de                                     - empiler : ajouter un élément en haut
file                                                                         de la pile
- défiler : lire la valeur de l'élément à la                                 - dépiler : lire la valeur de l'élément en
fin de la file en l'enlevant de la file                                      haut de la pile en l'enlevant de la pile
- tester si vide : savoir si la file est vide                                - tester si vide : savoir si la pile est vide
                                                  Gestion des buffers



                                                                                                                                    activation de
                                                                                                                                   plusieurs sorts
                                                                                                                                    et effets à la
                                                                                                                                        suite


http://www.dessinateur.biz/blog/tag/file-dattente/                      http://fnhostile420.tumblr.com/post/1586779953/aporianonymous-i-have-a-to-do-pile
http://img.clubic.com/02989454-photo-cisco-crs3.jpg                                   http://imageshack.us/photo/my-images/268/magicthegatheringback.jpg/
Plan

 • Listes
 • Piles et files
 • Arbres
Intérêt des arbres

 Intérêt des arbres :
 • représentation d'un objet qui a une structure arborée :
     → contenu d'un disque dur :
     C:        C:Users   C:UsersPhilippe
                           C:UsersGuest
                C:Work    C:WorkINF120        C:WorkINF120Cours1.pdf
                                                 C:WorkINF120Cours2.pdf
                                                 C:WorkINF120TD1.pdf
                           C:WorkINF220
 • stockage astucieux d'éléments
     → trouver rapidement le minimum des valeurs stockées
     → stocker un dictionnaire de manière compacte :
     a     l   g o
           r   t
               r ê t
Arbre

   La “minute xkcd” - Arbre
                                 - Voici un arbre de noël
                                 avec un tas de cadeaux
                                 en dessous !

                                 - … L'année prochaine,
                                 on ne t'invitera pas à la
                                 maison.




   http://xkcd.com/835
   http://xkcd.free.fr/?id=835
Définition récursive d'un arbre

 Un arbre :
 - soit une feuille, qui contient    - soit un noeud qui contient une valeur,
 une valeur, mais n'a pas d'enfant   et un tableau d'enfants dont chaque
                                     case pointe vers un arbre
Définition illustrée d'un arbre

    Un arbre :
    - soit une feuille, qui contient                - soit un noeud qui contient une valeur,
    une valeur, mais n'a pas d'enfant               et un tableau d'enfants dont chaque
                                                    case pointe vers un arbre

        5        A ← CreeArbre(5,[])                                5     6         2
A                                                         A
                                                                                    3
                                                       racine
                                                                          3         4
A ← CreeArbre(5,[CreeArbre(6,[CreeArbre(2,[]),CreeArbre(3,[])]),
                 CreeArbre(3,[CreeArbre(4,[]),CreeArbre(6,[])])])                   6


                                                    Si chaque tableau d'enfants a au plus
                                                    deux cases, c'est un arbre binaire.
Fonctions de base sur les arbres

 Tester si l'arbre est une feuille :                    5   6   2
 estFeuille(A)                                   A
                                                                3

                                                            3   4
 Récupérer la valeur de la racine de l'arbre                    6
 racine(A)



 Récupérer le tableau des enfants de la racine de l'arbre
 enfants(A)
Fonctions de base sur les arbres

 Tester si l'arbre est une feuille :                     5         6      2
 estFeuille(A)                                    A
                                                                          3
 Type de sortie pour un arbre d'entiers : un booléen
                                                                   3      4
 Récupérer la valeur de la racine de l'arbre                              6
 racine(A)
 Type de sortie pour un arbre d'entiers : un entier


 Récupérer le tableau des enfants de la racine de l'arbre
 enfants(A)
 Type de sortie pour un arbre d'entiers : un tableau d'arbres d'entiers

Contenu connexe

Tendances

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
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer Alexandru Radovici
 
Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Mathieu Saby
 
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 2Mathieu Saby
 
ALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlleALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlleAlexandru Radovici
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et LexerALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et LexerAlexandru Radovici
 
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)ebruchez
 
Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données ! Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données ! Yi YANG
 

Tendances (18)

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é
 
ALF 6 - Parser
ALF 6 - ParserALF 6 - Parser
ALF 6 - Parser
 
Structures donnee
Structures donneeStructures donnee
Structures donnee
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
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
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlleALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlle
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et LexerALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
fichiers arborescents
fichiers arborescentsfichiers arborescents
fichiers arborescents
 
ALF 4 - Grammaires
ALF 4 - GrammairesALF 4 - Grammaires
ALF 4 - Grammaires
 
ALF 8 - Generation du code
ALF 8 - Generation du codeALF 8 - Generation du code
ALF 8 - Generation du code
 
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
 
ALF 5 - Parser
ALF 5 - ParserALF 5 - Parser
ALF 5 - Parser
 
Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données ! Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
 
ALF 4 - Grammaires
ALF 4 - GrammairesALF 4 - Grammaires
ALF 4 - Grammaires
 

En vedette

M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013PGambette
 
exercices Corrigées du merise
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du meriseYassine Badri
 
INF120 - Algo DUT SRC1 - Cours 5
INF120 - Algo DUT SRC1 - Cours 5INF120 - Algo DUT SRC1 - Cours 5
INF120 - Algo DUT SRC1 - Cours 5PGambette
 
INF120 - Algo DUT SRC1 - Cours 2
INF120 - Algo DUT SRC1 - Cours 2INF120 - Algo DUT SRC1 - Cours 2
INF120 - Algo DUT SRC1 - Cours 2PGambette
 
INF120 - Algo DUT SRC1 - Cours 4
INF120 - Algo DUT SRC1 - Cours 4INF120 - Algo DUT SRC1 - Cours 4
INF120 - Algo DUT SRC1 - Cours 4PGambette
 
INF120 - Algo DUT SRC1 - Cours 1 (2012)
INF120 - Algo DUT SRC1 - Cours 1 (2012)INF120 - Algo DUT SRC1 - Cours 1 (2012)
INF120 - Algo DUT SRC1 - Cours 1 (2012)PGambette
 
Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)PGambette
 
INF220 - Algo DUT SRC1 - Cours 1 - 2013
INF220 - Algo DUT SRC1 - Cours 1 - 2013INF220 - Algo DUT SRC1 - Cours 1 - 2013
INF220 - Algo DUT SRC1 - Cours 1 - 2013PGambette
 
INF120 - Algo DUT SRC1 - Cours 4 (2012)
INF120 - Algo DUT SRC1 - Cours 4 (2012)INF120 - Algo DUT SRC1 - Cours 4 (2012)
INF120 - Algo DUT SRC1 - Cours 4 (2012)PGambette
 
INF120 - Algo DUT SRC1 - Cours 3 (2012)
INF120 - Algo DUT SRC1 - Cours 3 (2012)INF120 - Algo DUT SRC1 - Cours 3 (2012)
INF120 - Algo DUT SRC1 - Cours 3 (2012)PGambette
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3PGambette
 
INF120 - Algo DUT SRC1 - Cours 1
INF120 - Algo DUT SRC1 - Cours 1INF120 - Algo DUT SRC1 - Cours 1
INF120 - Algo DUT SRC1 - Cours 1PGambette
 
INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)PGambette
 
INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1PGambette
 
INF240 - Bases de données DUT SRC1 - Cours 2
INF240 - Bases de données DUT SRC1 - Cours 2INF240 - Bases de données DUT SRC1 - Cours 2
INF240 - Bases de données DUT SRC1 - Cours 2PGambette
 
INF240 - Bases de données DUT SRC1 - Cours 1
INF240 - Bases de données DUT SRC1 - Cours 1INF240 - Bases de données DUT SRC1 - Cours 1
INF240 - Bases de données DUT SRC1 - Cours 1PGambette
 
INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3PGambette
 

En vedette (20)

M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013
 
Modelisation conception SI
Modelisation conception SIModelisation conception SI
Modelisation conception SI
 
exercices Corrigées du merise
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du merise
 
INF120 - Algo DUT SRC1 - Cours 5
INF120 - Algo DUT SRC1 - Cours 5INF120 - Algo DUT SRC1 - Cours 5
INF120 - Algo DUT SRC1 - Cours 5
 
INF120 - Algo DUT SRC1 - Cours 2
INF120 - Algo DUT SRC1 - Cours 2INF120 - Algo DUT SRC1 - Cours 2
INF120 - Algo DUT SRC1 - Cours 2
 
INF120 - Algo DUT SRC1 - Cours 4
INF120 - Algo DUT SRC1 - Cours 4INF120 - Algo DUT SRC1 - Cours 4
INF120 - Algo DUT SRC1 - Cours 4
 
INF120 - Algo DUT SRC1 - Cours 1 (2012)
INF120 - Algo DUT SRC1 - Cours 1 (2012)INF120 - Algo DUT SRC1 - Cours 1 (2012)
INF120 - Algo DUT SRC1 - Cours 1 (2012)
 
Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)
 
INF220 - Algo DUT SRC1 - Cours 1 - 2013
INF220 - Algo DUT SRC1 - Cours 1 - 2013INF220 - Algo DUT SRC1 - Cours 1 - 2013
INF220 - Algo DUT SRC1 - Cours 1 - 2013
 
INF120 - Algo DUT SRC1 - Cours 4 (2012)
INF120 - Algo DUT SRC1 - Cours 4 (2012)INF120 - Algo DUT SRC1 - Cours 4 (2012)
INF120 - Algo DUT SRC1 - Cours 4 (2012)
 
INF120 - Algo DUT SRC1 - Cours 3 (2012)
INF120 - Algo DUT SRC1 - Cours 3 (2012)INF120 - Algo DUT SRC1 - Cours 3 (2012)
INF120 - Algo DUT SRC1 - Cours 3 (2012)
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3
 
INF120 - Algo DUT SRC1 - Cours 1
INF120 - Algo DUT SRC1 - Cours 1INF120 - Algo DUT SRC1 - Cours 1
INF120 - Algo DUT SRC1 - Cours 1
 
INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)
 
INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1
 
INF240 - Bases de données DUT SRC1 - Cours 2
INF240 - Bases de données DUT SRC1 - Cours 2INF240 - Bases de données DUT SRC1 - Cours 2
INF240 - Bases de données DUT SRC1 - Cours 2
 
INF240 - Bases de données DUT SRC1 - Cours 1
INF240 - Bases de données DUT SRC1 - Cours 1INF240 - Bases de données DUT SRC1 - Cours 1
INF240 - Bases de données DUT SRC1 - Cours 1
 
INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3
 
Ordonnancement
OrdonnancementOrdonnancement
Ordonnancement
 
Ordonnancement SJF
Ordonnancement SJFOrdonnancement SJF
Ordonnancement SJF
 

Dernier

LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Grammaire pour les élèves de la 6ème.doc
Grammaire pour les élèves de la  6ème.docGrammaire pour les élèves de la  6ème.doc
Grammaire pour les élèves de la 6ème.docKarimKhrifech
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxlamourfrantz
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfMICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfssuser40e112
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
présentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurprésentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurdinaelchaine
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Présentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxPrésentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxpopzair
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...M2i Formation
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptssusercbaa22
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 

Dernier (20)

LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Grammaire pour les élèves de la 6ème.doc
Grammaire pour les élèves de la  6ème.docGrammaire pour les élèves de la  6ème.doc
Grammaire pour les élèves de la 6ème.doc
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptx
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfMICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
présentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurprésentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteur
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Présentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxPrésentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptx
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.ppt
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 

INF220 - Algo DUT SRC1 - Cours 2

  • 1. DUT SRC – IUT de Marne-la-Vallée 15/02/2012 INF220 - Algorithmique Cours 2 Listes et arbres Philippe Gambette
  • 2. Résumé de l'épisode précédent • Récursivité Un algorithme récursif = un algorithme qui s'appelle lui-même On suppose que : * on sait construire/calculer le premier objet (initialisation) * à partir du (n-1)-ième objet on sait construire/calculer le n-ième (hérédité) alors on arrive à construire/calculer tous les objets. algo(param1) sortie de algo(param2) sortie de algo(param3) algo(param2) algo(param3) • Tri Pour ranger un ensemble d'éléments tous comparables deux à deux selon un certain ordre. Cas de base : tri d'un tableau d'entiers pour l'ordre ≤ Plusieurs algorithmes possibles : - tri par sélection (cours) plus ou moins - tri à bulles (cours + TD3) rapide... compter - tri par insertion (TD3) le nombre de - ... comparaisons
  • 3. Sources • Cours de Jean-François Berdjugin à l'IUT de Grenoble http://berdjugin.com/enseignements/inf/inf220/ • Cours de Xavier Heurtebise à l'IUT de Provence http://x.heurtebise.free.fr • Le livre de Java premier langage, d'A. Tasso • http://xkcd.com, http://xkcd.free.fr
  • 4. Plan des cours du semestre • Listes • Piles et files • Arbres
  • 5. Plan des cours du semestre • Listes • Piles et files • Arbres
  • 6. Intérêt des listes Le problème des tableaux : - taille fixe - insertion “difficile” d'un élément - suppression “difficile” d'un élément
  • 7. Intérêt des listes L'intérêt des listes : - taille variable - insertion facile d'un élément - suppression facile d'un élément Mais : - accès “difficile” au i-ième élément
  • 8. Définition récursive d'une liste “simplement chaînée” Une liste “simplement chaînée” est : - soit une liste vide - soit une première case qui contient une valeur, et qui pointe vers une liste
  • 9. Définition récursive d'une liste d'entiers Une liste d'entiers est : - soit une liste vide - soit une première case qui contient un entier, et qui pointe vers une liste d'entiers
  • 10. Définition illustrée d'une liste d'entiers Une liste d'entiers est : - soit une liste vide - soit une première case qui contient un entier, et qui pointe vers une liste d'entiers NULL 5 6
  • 11. Définition illustrée d'une liste d'entiers Une liste d'entiers est : - soit une liste vide - soit une première case qui contient un entier, et qui pointe vers une liste d'entiers NULL 5 6 Liste “simplement chaînée” : la chaîne d'une ancre Quand l'ancre est jetée et toute la chaîne déroulée, on a facilement accès au premier maillon (sur le bateau). Pour les suivants il faut remonter l'ancre. Quand on a un maillon sous les yeux on peut facilement le supprimer (le casser et accrocher le précédent au suivant), en insérer un... Source image : http://virginiejmr.free.fr/serie_salle_de_bain.htm
  • 12. Définition illustrée d'une liste d'entiers Une liste d'entiers est : - soit une liste vide - soit une première case qui contient un entier, et qui pointe vers une liste d'entiers NULL 5 6 L1 L2 L1 ← NULL L2 ← creeListe(5,creeListe(6, NULL))
  • 13. Définition illustrée d'une liste d'entiers Une liste d'entiers est : - soit une liste vide - soit une première case qui contient un entier, et qui pointe vers une liste NULL d'entiers NULL 5 6 L2 L1 L3 L2 L1 ← NULL L2 ← creeListe(5,creeListe(6, NULL)) L2 ← NULL L3 ← L1
  • 14. Fonctions de base sur les listes Une liste d'entiers est : - soit une liste vide - soit une première case qui contient un entier, et qui pointe vers une liste d'entiers NULL 5 6 L1 L2 L1 ← NULL L2 ← creeListe(5,creeListe(6, NULL)) Sur une liste L1 ou L2, on peut : si L2 est non vide : si L2 est non vide : • savoir si elle est vide : • accéder à la valeur de • accéder à la liste qui L1 = NULL ? son premier élément : commence à la case suivante : tete(L2) suivant(L2)
  • 15. Fonctions de base sur les listes Une liste d'entiers est : - soit une liste vide - soit une première case qui contient un entier, et qui pointe vers une liste d'entiers NULL 5 6 L1 L2 L3 L1 ← NULL L2 ← creeListe(5,creeListe(6, NULL)) Sur une liste L1 ou L2, on peut : si L2 est non vide : si L2 est non vide : • savoir si elle est vide : • accéder à la valeur de • accéder à la liste qui L1 = NULL ? son premier élément : commence à la case suivante : tete(L2) renvoie 5 suivant(L2) renvoie L3
  • 16. Fonctions de base sur les listes Une liste d'entiers est : - soit une liste vide - soit une première case qui contient un entier, et qui pointe vers une liste d'entiers NULL 5 6 L1 L2 L5 L2 ← creeListe(5,creeListe(6, NULL)) L1 ← NULL L5 ← suivant(L2) Sur une liste L1 ou L2, on peut : si L2 est non vide : si L2 est non vide : • savoir si elle est vide : • accéder à la valeur de • accéder à la liste qui L1 = NULL ? son premier élément : commence à la case suivante : tete(L2) renvoie 5 suivant(L2)
  • 17. Fonctions de base sur les listes Une liste d'entiers est : - soit une liste vide - soit une première case qui contient un entier, et qui pointe vers une liste d'entiers NULL 5 4 L1 L2 L5 L2 ← creeListe(5,creeListe(6, NULL)) L1 ← NULL L5 ← suivant(L2) tete(L5) ← 4 Sur une liste L1 ou L2, on peut : si L2 est non vide : si L2 est non vide : • savoir si elle est vide : • accéder à la valeur de • accéder à la liste qui L1 = NULL ? son premier élément : commence à la case suivante : tete(L2) renvoie 5 suivant(L2)
  • 18. Fonctions de base sur les listes Une liste d'entiers est : - soit une liste vide - soit une première case qui contient un entier, et qui pointe vers une liste d'entiers NULL 5 4 L1 L2 L5 L3 L2 ← creeListe(5,creeListe(6, NULL)) L1 ← NULL L5 ← suivant(L2) tete(L5) ← 4 Sur une liste L1 ou L2, on peut : si L2 est non vide : si L2 est non vide : • savoir si elle est vide : • accéder à la valeur de • accéder à la liste qui L1 = NULL ? son premier élément : commence à la case suivante : tete(L2) renvoie 5 suivant(L2) renvoie L3
  • 19. Premières fonctions sur les listes Modification de l'élément en tête d'une liste Ecrire l'algorithme remplaceTete qui prend en entrée une liste d'entiers L et un entier a, et renvoie la liste L dont le premier élément est remplacé par a Algorithme remplaceTete 2 5 6 Entrées : liste d'entiers L, entier a Type de sortie : liste d'entiers Début L Fin
  • 20. Premières fonctions sur les listes Modification de l'élément en tête d'une liste Ecrire l'algorithme remplaceTete qui prend en entrée une liste d'entiers L et un entier a, et renvoie la liste L dont le premier élément est remplacé par a Algorithme remplaceTete 2 5 6 Entrées : liste d'entiers L, entier a Type de sortie : liste d'entiers Début L remplaceTete(L,5) : 5 5 6 L Fin
  • 21. Premières fonctions sur les listes Modification de l'élément en tête d'une liste Ecrire l'algorithme remplaceTete qui prend en entrée une liste d'entiers L et un entier a, et renvoie la liste L dont le premier élément est remplacé par a Algorithme remplaceTete 2 5 6 Entrées : liste d'entiers L, entier a Type de sortie : liste d'entiers Début L … tete(L) ← a remplaceTete(L,5) : renvoyer L 5 5 6 ... Fin L
  • 22. Premières fonctions sur les listes Modification de l'élément en tête d'une liste Ecrire l'algorithme remplaceTete qui prend en entrée une liste d'entiers L et un entier a, et renvoie la liste L dont le premier élément est remplacé par a Algorithme remplaceTete 2 5 6 Entrées : liste d'entiers L, entier a Type de sortie : liste d'entiers Début L … tete(L) ← a remplaceTete(L,5) : renvoyer L 5 5 6 ... Fin L' ne fonctionne pas sur la liste vide L' L
  • 23. Premières fonctions sur les listes Modification de l'élément en tête d'une liste Ecrire l'algorithme remplaceTete qui prend en entrée une liste d'entiers L et un entier a, et renvoie la liste L dont le premier élément est remplacé par a Algorithme remplaceTete 2 5 6 Entrées : liste d'entiers L, entier a Type de sortie : liste d'entiers Début L si L ≠ NULL alors : tete(L) ← a remplaceTete(L,5) : Fin Si 5 5 6 renvoyer L Fin L Facile pour les listes, facile pour les tableaux
  • 24. Premières fonctions sur les listes Suppression de l'élément en tête d'une liste Par exemple, supprimer 5 au début de la liste L=creeListe(5,creeListe(6, NULL)) 5 6 L
  • 25. Premières fonctions sur les listes Suppression de l'élément en tête d'une liste Par exemple, supprimer 5 au début de la liste L=creeListe(5,creeListe(6, NULL)) 5 6 L
  • 26. Premières fonctions sur les listes Suppression de l'élément en tête d'une liste Par exemple, supprimer 5 au début de la liste L=creeListe(5,creeListe(6, NULL)) 5 6 L ← suivant(L) L
  • 27. Premières fonctions sur les listes Suppression de l'élément en tête d'une liste Par exemple, supprimer 5 au début de la liste L=creeListe(5,creeListe(6, NULL)) 5 6 L ← suivant(L) L Facile pour les listes, “difficile” pour les tableaux
  • 28. Premières fonctions sur les listes Insertion d'un élément en tête d'une liste Par exemple, insérer 2 au début de la liste L=creeListe(5,creeListe(6, NULL)) 5 6 L
  • 29. Premières fonctions sur les listes Insertion d'un élément en tête d'une liste Par exemple, insérer 2 au début de la liste L=creeListe(5,creeListe(6, NULL)) 2 5 6 L creeListe(2,L)
  • 30. Premières fonctions sur les listes Insertion d'un élément en tête d'une liste Par exemple, insérer 2 au début de la liste L=creeListe(5,creeListe(6, NULL)) 2 5 6 L ← creeListe(2,L) L L Facile pour les listes, “difficile” pour les tableaux
  • 31. Premières fonctions sur les listes Valeur du i-ième élément d'une liste Nécessite de parcourir la liste ! Écrire la fonction valeur qui prend en entrée une liste d'entiers L et un entier i, et qui renvoie la valeur de la i-ième case de L, si elle existe, et -1 sinon. Algorithme valeur 2 5 6 Entrées : liste d'entiers L, entier i Type de sortie : Variables : valeur(L,2) renvoie... Début L Fin
  • 32. Premières fonctions sur les listes Valeur du i-ième élément d'une liste Nécessite de parcourir la liste ! Écrire la fonction valeur qui prend en entrée une liste d'entiers L et un entier i, et qui renvoie la valeur de la i-ième case de L, si elle existe, et -1 sinon. Algorithme valeur 2 5 6 Entrées : liste d'entiers L, entier i Type de sortie : Variables : valeur(L,2) renvoie 5 Début L Fin
  • 33. Premières fonctions sur les listes Valeur du i-ième élément d'une liste Nécessite de parcourir la liste ! Écrire la fonction valeur qui prend en entrée une liste d'entiers L et un entier i, et qui renvoie la valeur de la i-ième case de L, si elle existe, et -1 sinon. Algorithme valeur 2 5 6 Entrées : liste d'entiers L, entier i L3 Type de sortie : entier Variables : entier resultat Début L L' L2 resultat ← -1 Si L≠NULL alors : Si i=1 alors : resultat ← tete(L) Sinon : resultat ← valeur(suivant(L),i-1) Fin Si Fin Si renvoyer resultat Fin Facile pour les tableaux, “difficile” pour les listes
  • 34. Premières fonctions sur les listes Valeur du i-ième élément d'une liste Nécessite de parcourir la liste ! Écrire la fonction valeur qui prend en entrée une liste d'entiers L et un entier i, et qui renvoie la valeur de la i-ième case de L, si elle existe, et -1 sinon. Algorithme valeur 2 5 6 Entrées : liste d'entiers L, entier i L3 Type de sortie : entier Variables : entier resultat Début L L1 L2 resultat ← -1 Si L≠NULL alors : Arbre d'exécution : Si i=1 alors : resultat ← tete(L) 6 valeur(L,3) valeur(L2,1) Sinon : resultat ← valeur(suivant(L),i-1) 6 6 Fin Si valeur(L1,2) Fin Si renvoyer resultat Fin Facile pour les tableaux, “difficile” pour les listes
  • 35. Plan • Listes • Piles et files • Arbres
  • 36. Files et piles Files Piles FIFO “First In First Out” LIFO “Last In First Out” File d'attente à la Poste Pile de documents à travailler
  • 37. Files et piles Files Piles FIFO “First In First Out” LIFO “Last In First Out” File d'attente à la Poste Pile de documents à travailler Gestion des buffers activation de plusieurs sorts et effets à la suite http://www.dessinateur.biz/blog/tag/file-dattente/ http://fnhostile420.tumblr.com/post/1586779953/aporianonymous-i-have-a-to-do-pile http://img.clubic.com/02989454-photo-cisco-crs3.jpg http://imageshack.us/photo/my-images/268/magicthegatheringback.jpg/
  • 38. Files et piles Files Piles FIFO “First In First Out” LIFO “Last In First Out” File d'attente à la Poste Pile de documents à travailler Pourquoi utiliser ces structures de données ? • Plus simple à programmer qu'une liste • Fonctions plus limitées, adaptées aux besoins Gestion des buffers activation de plusieurs sorts et effets à la suite http://www.dessinateur.biz/blog/tag/file-dattente/ http://fnhostile420.tumblr.com/post/1586779953/aporianonymous-i-have-a-to-do-pile http://img.clubic.com/02989454-photo-cisco-crs3.jpg http://imageshack.us/photo/my-images/268/magicthegatheringback.jpg/
  • 39. Files et piles Files Piles FIFO “First In First Out” LIFO “Last In First Out” File d'attente à la Poste Pile de documents à travailler Quatre fonctions : Quatre fonctions : - créer : créer une file vide - créer : créer une pile vide - enfiler : ajouter un élément en fin de - empiler : ajouter un élément en haut file de la pile - défiler : lire la valeur de l'élément à la - dépiler : lire la valeur de l'élément en fin de la file en l'enlevant de la file haut de la pile en l'enlevant de la pile - tester si vide : savoir si la file est vide - tester si vide : savoir si la pile est vide Gestion des buffers activation de plusieurs sorts et effets à la suite http://www.dessinateur.biz/blog/tag/file-dattente/ http://fnhostile420.tumblr.com/post/1586779953/aporianonymous-i-have-a-to-do-pile http://img.clubic.com/02989454-photo-cisco-crs3.jpg http://imageshack.us/photo/my-images/268/magicthegatheringback.jpg/
  • 40. Files et piles implémentable avec liste implémentable avec liste Files doublement chaînée Piles simplement chaînée FIFO “First In First Out” LIFO “Last In First Out” File d'attente à la Poste Pile de documents à travailler Quatre fonctions : Quatre fonctions : - créer : créer une file vide - créer : créer une pile vide - enfiler : ajouter un élément en fin de - empiler : ajouter un élément en haut file de la pile - défiler : lire la valeur de l'élément à la - dépiler : lire la valeur de l'élément en fin de la file en l'enlevant de la file haut de la pile en l'enlevant de la pile - tester si vide : savoir si la file est vide - tester si vide : savoir si la pile est vide Gestion des buffers activation de plusieurs sorts et effets à la suite http://www.dessinateur.biz/blog/tag/file-dattente/ http://fnhostile420.tumblr.com/post/1586779953/aporianonymous-i-have-a-to-do-pile http://img.clubic.com/02989454-photo-cisco-crs3.jpg http://imageshack.us/photo/my-images/268/magicthegatheringback.jpg/
  • 41. Plan • Listes • Piles et files • Arbres
  • 42. Intérêt des arbres Intérêt des arbres : • représentation d'un objet qui a une structure arborée : → contenu d'un disque dur : C: C:Users C:UsersPhilippe C:UsersGuest C:Work C:WorkINF120 C:WorkINF120Cours1.pdf C:WorkINF120Cours2.pdf C:WorkINF120TD1.pdf C:WorkINF220 • stockage astucieux d'éléments → trouver rapidement le minimum des valeurs stockées → stocker un dictionnaire de manière compacte : a l g o r t r ê t
  • 43. Arbre La “minute xkcd” - Arbre - Voici un arbre de noël avec un tas de cadeaux en dessous ! - … L'année prochaine, on ne t'invitera pas à la maison. http://xkcd.com/835 http://xkcd.free.fr/?id=835
  • 44. Définition récursive d'un arbre Un arbre : - soit une feuille, qui contient - soit un noeud qui contient une valeur, une valeur, mais n'a pas d'enfant et un tableau d'enfants dont chaque case pointe vers un arbre
  • 45. Définition illustrée d'un arbre Un arbre : - soit une feuille, qui contient - soit un noeud qui contient une valeur, une valeur, mais n'a pas d'enfant et un tableau d'enfants dont chaque case pointe vers un arbre 5 A ← CreeArbre(5,[]) 5 6 2 A A 3 racine 3 4 A ← CreeArbre(5,[CreeArbre(6,[CreeArbre(2,[]),CreeArbre(3,[])]), CreeArbre(3,[CreeArbre(4,[]),CreeArbre(6,[])])]) 6 Si chaque tableau d'enfants a au plus deux cases, c'est un arbre binaire.
  • 46. Fonctions de base sur les arbres Tester si l'arbre est une feuille : 5 6 2 estFeuille(A) A 3 3 4 Récupérer la valeur de la racine de l'arbre 6 racine(A) Récupérer le tableau des enfants de la racine de l'arbre enfants(A)
  • 47. Fonctions de base sur les arbres Tester si l'arbre est une feuille : 5 6 2 estFeuille(A) A 3 Type de sortie pour un arbre d'entiers : un booléen 3 4 Récupérer la valeur de la racine de l'arbre 6 racine(A) Type de sortie pour un arbre d'entiers : un entier Récupérer le tableau des enfants de la racine de l'arbre enfants(A) Type de sortie pour un arbre d'entiers : un tableau d'arbres d'entiers