On veut construire, à partir d’un ensemble de n élément, une nouvel ensemble de longueur n+1 comprenant un nouvel élément inséré avant ou après un élément donné. L’algorithme est formé de trois actions:
- Copie des k-1 premiers élément de l’ensemble dans un nouvel ensemble
- Insertion de l’élément choisi dans le nouvel ensemble
- Copie des derniers éléments de l’ensemble dans un nouvel ensemble
Si la position n’existe pas l’algorithme renvoie un nouvel ensemble inchangé.
Remarques.
- Pour simplifier les algorithmes présentés, on choisi de n’insérer qu’un seul élément à la fois.
- On retrouve ici le problème d’accès par valeur à un élément d’un ensemble.
- Les schémas présentés nécessitent la création d’une nouvel ensemble.
Objectif: -- Insérer un élément après ou avant l'élément sélectionné Paramètres: ensemble -- ensemble de départ nouvelEnsemble -- nouvel ensemble comprenant l'insertion d'un élément avantElement -- élément à insérer avant apresElement -- élément à insérer après Résultat -- Le nouvel ensemble, si l'insertion n'est pas possible -- il contient les élément de l'ensemble de départ Remarque: -- L'ensemble de départ n'est pas modifié. -- Un nouvel ensemble est créé
Insertion d’un élément avant
InsererParValeurAvant ensemble Ensemble
   , avantElement Element
   , elementAinserer Element 
   -> Ensemble
   existe <- Faux
   nouvelEnsemble <- [ensemble]
   Initialiser ensemble
   Enumerer ensemble ET NON existe
      element >- Element_Courant ensemble 
      existe <- element = avantElement
      Si existe nouvelEnsemble <- elementAinserer
      Element_Suivant ensemble
      nouvelEnsemble <- element
   Fin
   Enumerer ensemble
      element >- Element_Courant ensemble 
      nouvelEnsemble <- element
      Element_Suivant ensemble
   Fin
<- nouvelEnsemble
Fin
Insertion d’un élément après
InsererParValeurApres ensemble Ensemble
   , apresElement Element
   , elementAinserer Element 
   -> Ensemble 
   existe <- Faux 
   nouvelEnsemble <- [ensemble] 
   Initialiser ensemble 
   Enumerer ensemble ET NON existe 
      element <- Element_Courant ensemble 
      existe <- element = apresElement
      nouvelEnsemble <-element 
      Element_Suivant ensemble 
   Fin 
   Si existe
      nouvelEnsemble <- elementAinserer 
      Enumerer ensemble 
         element <- Element_Courant ensemble 
         nouvelEnsemble <- element
         Element_Suivant ensemble
      Fin 
   Fin 
<- nouvelEnsemble 
Fin
Traduction des algorithmes en: Swift, Julia
copyright A rchitectures A pplicatives A vancées A3-Soft