Spis treści

Tablice haszujące

Termin zajęć: 8./9. maja 2012

Do przygotowania - teoria na temat:

  1. Rodzaje haszowania
    • haszowanie bezpośrednie
    • haszowanie modularne
    • haszowanie przez mnożenie
    • haszowanie uniwersalne
  2. Problem konfliktów podczas haszowania
  3. Sposoby rozwiązywania konfliktów
    • Metoda łańcuchowa
    • Metoda adresowania otwartego

Do pobrania:

Proszę pobrać archiwum hashing.zip, w którym znajdują się pliki potrzebne do wykonania ćwiczeń na zajęciach.

Oto krótki opis plików:

Proszę zapoznać się ze strukturą i działaniem poszczególnych klas, przetestować kod i w miarę możliwości przynieść na zajęcia laptopy wraz z wszystkimi plikami (można umówić się na pracę w parach/trójkach i na zajęciach pracować we 2-3 osoby przy jednym komputerze).

Ćwiczenia i zadania implementacyjne

Punkty oznaczone 8-) należy samodzielnie wykonać w domu, pozostałe punkty stanowią opis, wprowadzenie, zachętę do samodzielnych testów.

Zadanie 1

Zadanie 2

8-) W paczce znajdują się pliki hopen.cpp i hopen.h które zawierają definicję klasy realizującej tablicę haszującą w której konflikty są rozwiązywane metodą adresowania otwartego. W tej klasie brakuje obsługi wartości usuniętych. Zadanie polega na uzupełnieniu podanej klasy o obsługę tych wartości.
Rozwiązanie jest krótkie: należy:

  1. W pliku nagłówkowym dopisać definicję nowej wartości np.
    #define STS_DLTD 2
  2. W pliku cpp uzupełnić:
    1. Metodę insert
    2. Metodę remove
    3. Ewentualnie w metodzie wypisującej wartości printValues dopisać jeden warunek:
      else if(_ststab[i] == STS_DLTD)
           cout << "DLTD, ";