Haszowanie - adresowanie liniowe

0

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;
}
2

Podstawowy problem to, że to nie C++.

2
  1. Zacznij od napisania w C++ albo w C funkcji haszującej. Twój kod to pomieszanie Pascala(?) z C(?).

1 użytkowników online, w tym zalogowanych: 0, gości: 1