Corrigé 13. Enoncé
1. Essai linéaire avec effacement logique des données
Etat du tableau après insertion et après suppression
Les champs Occ et Eff sont initialisés à FAUX (f).
Recherche/insertion d'un élément E dans le cas oł on ne
récupère pas les emplacements des données effacées
Dans les algorithmes qui suivent, N est une variable globale qui désigne le nombre
d'éléments dans le vecteur.
I := H(E) { H désigne la fonction de hachage }
Trouv, Vide := FAUX
TANTQUE NON Trouv ET NON Vide :
SI NON Eff(I) :
SI Occ(I) :
SI Val(I) = E
Trouv := VRAI
SINON
I:=I-1;SI I<0 : I:=I+M FSI
FSI
SINON
Vide := VRAI
SINON
I:=I-1;SI I<0 :
I:=I+M FSI
FSI
FINTANTQUE
SI NON Trouv :
SI N = M-1 :
"
Débordement"
SINON
N := N + 1
Aff_Val(I, E)
Aff_Occ(I, VRAI)
FSI
SINON
" E existe"
FSI
Recherche/insertion d'un élément E dans le cas oł on récupère
les emplacements des données effacées.
I := H(E)
Trouv, Vide, Effacé := FAUX
TANTQUE NON Trouv ET NON Vide :
SI NON Eff(I) :
SI Occ(I) :
SI Val(I) = E
Trouv := VRAI
SINON
I:=I-1;SI I<0 : I:=I+M FSI
FSI
SINON
Vide := VRAI
FSI
SINON
SI NON Effacé :
K := I
Effacé := VRAI
FSI
FSI
FINTANTQUE
SI NON Trouv :
{ Sauvegarde de la première entrée
rencontrée effacée }
SI Effacé :
Aff_Val(K,E)
Aff_Eff(K, FAUX)
SINON
SI N = M-1 :
" Débordement"
SINON
N := N + 1
Aff_Val(I, E)
Aff_Occ(I, VRAI)
FSI
SINON
" E existe"
FSI
Algorithme de réorganisation (suppression physique des emplacements
des données effacées ).
Continue := VRAI
TANTQUE Continue :
Effacé := FAUX
I := 0
TANTQUE I <= M-1 ET NON Effacé :
SI Eff(I) : Effacé :=
VRAI
SINON I := I + 1 FSI
FINTANTQUE
SI Effacé : Supprimer(I)
SINON Continue := FAUX FSI
FINTANTQUE
Le module Supprimer est le suivant :
Continue := VRAI
TANTQUE Continue :
Aff_Eff(I, FAUX)
Aff_Occ(I, FAUX)
N := N - 1
J := I
I:=I-1;SI I<0 : I:=I+M FSI
Vide, Cond := FAUX
TANTQUE NON Cond ET NON Vide :
SI NON Eff(I) :
SI NON Occ(I) :
Vide := VRAI
SINON
R := H( Val(I) )
SI J > I :
Test := R < I OU R >= J
SINON Test := J <= R < I FSI
SI Test : Cond := VRAI
SINON
I:=I-1;SI I<0 :I:=I+M FSI
FSI
FSI
SINON
I:=I-1;SI I<0 : I:=I+M
FSI
FINTANTQUE
SI Vide : Continue := FAUX
SINON Aff_Val(J, Val(I) ) FSI
FINTANTQUE
Etat du tableau après cette réorganisation
Les champs Eff et Occ ont la valeur FAUX.