Computing">
TD 10 Corrige
TD 10 Corrige
TD 10 Corrige
Rappel :
SetLength(tableau, n) est de complexité O(n)
SetLength(tableau, 1) est de complexité O(1)
New(element) est de complexité O(1) quand element est d’un type de taille fixe
1. On aggrandi la taille de la table de hachage. Dans ce cas là, tous les éléments doivent
être insérés de nouveau. Il est courant de doubler la taille de la table de hachage.
program td_9;
{$APPTYPE CONSOLE}
uses
SysUtils;
const m = 13;
2
begin
if (length(HT[i].cle)=0) or (HT[i].cle = cle) then
result := i;
i := (i + 1) mod m;
end;
end;
{ COMMENTAIRE
if the table is almost full
rebuild the table larger (note 1)
i := findHT(key)
HT[i] := elem;
FIN DU COMMENTAIRE}
procedure showtable;
var i : integer;
begin
3
{ à faire }
end;
begin
newelement.cle := ’SAM’;
newelement.date := ’20.03.84’;
put(newelement);
newelement.cle := ’EMMA’;
newelement.date := ’13.02.86’;
put(newelement);
newelement.cle := ’LEO’;
newelement.date := ’21.02.85’;
put(newelement);
newelement.cle := ’AXEL’;
newelement.date := ’28.03.82’;
put(newelement);
if (exists(’AXEL’)) then
begin
newelement := lookup(’AXEL’);
WriteLn(’Birthdate’,newelement.date);
end
else
WriteLn(’Cette entrée n existe pas’);
showtable;
ReadLn;
end.
1. Ecrire la fonction showtable qui affiche la table de hachage avec la clé et la date
d’anniversaire.
procedure showtable;
var i : integer;
begin
for i:=0 to m-1 do
begin
Write(i);
WriteLn(’ : ’,HT[i].cle, ’ ’, HT[i].date);
end;
end;
2. Faites tourner le programme entier dans un tableau. Utiliser une nouvelle colonne pour
chaque nouvelle variable locale.
4
i i result i j result
1er put 1er findHT 1er findHT 1er hash 1er hash 1er hash
5
2
6
3
1
1
1
-1
1
2
1
i i result i j result
2ème put 2ème findHT 2ème findHT 2ème hash 2ème hash 2ème hash
4
2
9
3
2
4
5
5
5
-1
5
6
5
i i result i j result
3ème put 3ème findHT 3ème findHT 3ème hash 3ème hash 3ème hash
11
2
12
3
5
5
5
-1
6
6
7
6
i i result i j result
4ème put 4ème findHT 4ème findHT 4ème hash 4ème hash 4ème hash
0
2
10
3
3
4
12
12
12
-1
12
0
12
5
i result i result i j result
1er exists 1er exists 5ème findHT 5ème findHT 5ème hash 5ème hash 5ème hash
11
2
12
3
5
5
5
-1
6
6
7
6
true
i i result i j result
1er lookup 6ème findHT 6ème findHT 6ème hash 6ème hash 6ème hash
11
2
12
3
5
5
5
-1
6
6
7
6
La procédure showtable affichera :
0 :
1 : SAM 20.03.84
2 :
3 :
4 :
5 : EMMA 13.02.86
6 : LEO 21.02.85
7 :
8 :
9 :
10 :
11 :
12 : AXEL 28.03.82