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