Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit SimpleHashTable;
- interface
- const max=200;
- type index=1..max;
- element=string;
- zaznam=^ukzaznam;
- ukzaznam= record
- data:element;
- dalsi:zaznam;
- pocet:word;
- end;
- pole=array[index] of zaznam;
- var i:index;
- procedure init(var p:pole);
- function klic(slovo:element):index;
- procedure pridej(var p:pole;slovo:element);
- function hledej(var p:pole;slovo:element):word;
- procedure zobraz(var p:pole);
- implementation
- procedure init(var p:pole);
- begin
- for i:=1 to max do p[i]:=nil;
- end;
- function klic(slovo:element):index;
- begin
- if slovo='' then klic:=1
- else
- begin
- klic:=( (ord(slovo[1])+ord(slovo[2])) mod max) +1
- end;
- end;
- procedure pridej(var p:pole;slovo:element);
- var i:index; pom,novy:zaznam; nalezeno:boolean;
- begin
- i:=klic(slovo);
- pom:=p[i];
- nalezeno:=false;
- while (pom<>nil) and not nalezeno do
- begin
- if slovo=pom^.data then
- begin
- nalezeno:=true;
- pom^.pocet:=pom^.pocet+1;
- end;
- pom:=pom^.dalsi;
- end;
- if not nalezeno then
- begin
- new(novy);
- novy^.data:=slovo;
- novy^.pocet:=1;
- novy^.dalsi:=p[i];
- p[i]:=novy;
- end
- end;
- function hledej(var p:pole;slovo:element):word;
- var i:index; pom:zaznam;
- pocet:word;
- begin
- i:=klic(slovo);
- pom:=p[i];
- pocet:=0;
- while (pom<>nil) and (pocet<>0) do
- begin
- if pom^.data=slovo then pocet:=pom^.pocet;
- pom:=pom^.dalsi;
- end;
- hledej:=pocet;
- end;
- procedure zobraz(var p:pole);
- var i:index; pom:zaznam;
- begin
- for i:=1 to max do
- begin
- writeln('----------------------');
- writeln('Hash: ',i);
- writeln('----------------------');
- pom:=p[i];
- while pom<>nil do
- begin
- writeln (pom^.data,' - ', pom^.pocet );
- pom:=pom^.dalsi;
- end;
- end;
- end;
- end.
- /////////////////////////////////////////////////////////////////////////////////////////////////
- program Hash;
- uses SimpleHashTable;
- var mojePole:pole;
- var pom:string;
- begin
- init(mojePole);
- while pom<>'konec' do
- begin
- write('Zadej retezec k ulozeni: ');
- readln(pom);
- pridej(mojePole, pom);
- end;
- zobraz(mojePole);
- write('Co chces najit: ');
- read(pom);
- writeln(hledej(mojePole, pom));
- readln;
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement