blob: 4d080566e1ed1ff66d28a637cea346cb21b14e1f (
plain)
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
|
{$mode objfpc}
uses
SysUtils,Contnrs;
var
colls : Integer;
// Test for Hashing
procedure Test;
var HL:TFPHashList;
i,n:integer;
dat:array[0..5]of pinteger;
begin
HL:=TFpHashList.Create;
HL.Capacity:=389;
// Create pointer for data
for i:=0 to 5 do
begin
dat[i]:=new(pinteger);
dat[i]^:=i;
end;
// add A..F with pointer
for i:=0 to 5 do
Writeln('HL.Add: '+chr(i+65)+' = Index: '
+IntToStr(HL.Add(chr(i+65),dat[i])));
// get collisions
for i:=0 to 5 do
begin
Writeln('--------------');
Writeln('Collision for Index: '+IntToStr(i));
n:=HL.FindIndexOf(chr(i+65));
while n>=0 do
begin
Writeln('Index: '+IntToStr(n)+
' | NameOfIndex: '+HL.NameOfIndex(n)+
' | HashOfIndex: '+IntToStr(HL.HashOfIndex(n))+
' | NextCollision: '+IntToStr(HL.GetNextCollision(n)));
n:=HL.GetNextCollision(n);
if n<>-1 then
inc(colls);
end; //while
end; //for
HL.Free;
for i:=0 to 5 do dispose(dat[i]);
end;
begin
Test;
if colls>0 then
halt(1);
end.
|