-
Notifications
You must be signed in to change notification settings - Fork 0
/
th.adb
88 lines (69 loc) · 2.09 KB
/
th.adb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package body TH is
procedure Initialiser(Sda: out T_TH) is
begin
--Initialiser le pointeur pour chaque pointeur du tableau
for i in 1 .. Capacite loop
Initialiser(Sda(i));
end loop;
end Initialiser;
function Est_Vide(Sda :in T_TH) return Boolean is
begin
--Retourner false, si un pointeur du tableau n'est pas vide,
for i in 1 .. Capacite loop
if not Est_Vide(SdA(i)) then
return(false);
end if;
end loop;
return(True);
end;
function Taille (Sda : in T_TH) return Integer is
Compteur: Integer;
begin
Compteur:=0;
--Faire la sommme des tailles de chaques pointeur du tableau
for i in 1 .. Capacite loop
Compteur:=Compteur+Taille(Sda(i));
end loop;
return Compteur;
end Taille;
procedure Enregistrer (Sda : in out T_TH; Cle : in T_Cle ; Donnee : in T_Donnee) is
valeur_hachage: Integer;
begin
valeur_hachage:=funct_hachage(Cle)mod Capacite +1;
Enregistrer(Sda(valeur_hachage),Cle,Donnee);
end Enregistrer;
function Cle_Presente (Sda : in T_TH ; Cle : in T_Cle) return Boolean is
valeur_hachage: Integer;
begin
valeur_hachage:=funct_hachage(Cle)mod Capacite+1;
return(Cle_Presente(Sda(valeur_hachage),Cle));
end;
function La_Donnee (Sda : in T_TH ; Cle : in T_Cle) return T_Donnee is
valeur_hachage: Integer;
begin
valeur_hachage:=funct_hachage(Cle)mod Capacite+1;
return(La_Donnee(sda(valeur_hachage),Cle));
end La_Donnee;
procedure Supprimer (Sda : in out T_TH ; Cle : in T_Cle) is
valeur_hachage: Integer;
begin
valeur_hachage:=funct_hachage(Cle)mod Capacite+1;
Supprimer(Sda(valeur_hachage),Cle);
end Supprimer;
procedure Vider (Sda : in out T_TH) is
begin
-- Vider chaque pointeur du tableau
for i in 1 .. Capacite loop
Vider(Sda(i));
end loop;
end Vider;
procedure Pour_Chaque (Sda : in T_TH) is
procedure Pour_ChaqueNew is
new th_lca.Pour_Chaque(Traiter);
begin
--Appliquer Traiter à chaque case du tableau
for i in 1 .. Capacite loop
Pour_ChaqueNew(Sda(i));
end loop;
end Pour_Chaque;
end TH;