Insérer par valeur

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.
  1. Pour simplifier les algorithmes présentés, on choisi de n’insérer qu’un seul élément à la fois.
  2. On retrouve ici le problème d’accès par valeur à un élément d’un ensemble.
  3. 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éé

Traductions:  Swift, Julia

Insertion d’un élément avant

insererParValeurAvant(ensemble Ensemble
                    , avantElement Element
                    , elementAinserer Element) 
                   -> Ensemble
   existe <- Faux
   nouvelEnsemble <- Ensemble_Element(ensemble)
   Initialiser(ensemble)
   Enumerer ensemble ET NON existe
      element >- Element(ensemble)
      existe <- element = avantElement
      Si existe Ranger(nouvelEnsemble,elementAinserer)
      Ranger_Element(nouvelEnsemble,element)
   Fin
   Enumerer ensemble Ranger_Element(nouvelEnsemble,Element(ensemble))
   <- nouvelEnsemble
Fin

Insertion d’un élément après

insererParValeurApres (ensemble Ensemble
                      , apresElement Element
                      , elementAinserer Element)
                     -> Ensemble
   existe <- Faux
   nouvelEnsemble >- Ensemble_Element(ensemble)
   Initialiser(ensemble)
   Enumerer ensemble ET NON existe
      element <- Element(ensemble)
      existe <- element = apresElement
      Ranger_Element(nouvelEnsemble,element)
   Fin
   Si existe 
      Ranger(nouvelEnsemble, elementAinserer)
      Enumerer ensemble Ranger_Element(nouvelEnsemble,Element(ensemble))
   Fin
   <- nouvelEnsemble
Fin

copyright A rchitectures A pplicatives A vancées A3-Soft

mathAlgo