Mam za zadanie zaimplementować funkcję wstawienia elementu x do tablicy mieszającej z adresowaniem liniowym jako metodą rozwiązywania kolizji na podstawie pseudokodu.
Funkcja mieszająca:
h(x, 0) = x mod T
h(x, i) = (h(x, 0) + i) mod T
gdzie T oznacza rozmiar tablicy mieszającej -1048576 .
Pseudokod:
procedure hash al wstaw(x);
begin
for i := 0 to m − 1 do
k := h(x, i);
if A[k] jest równe -1 then
A[k] := x;
return true;
end if;
end for;
return false;
end.
Udało mi się stworzyć taką funkcję jednak nadal nie potrafię znaleźć błędu. Byłbym wdzięczny za pomoc.
bool wstaw_hasz(int x, int* tablica)
{
int k, h;
for (int i = 1; i < 1048576; i++) {
k = h(x, i);
if (tablica[k]=-1)
{
tablica[k] : = x;
return true;
}
else
{
h(x, 0) = x mod 1048576;
h(x, i) = (h(x, 0) + i) mod 1048576;
}
}
return false;
}