PDA

View Full Version : [Frage] Hashing mit verketteten Überläufern


Unic0der
26-05-2003, 16:59
Folgende Sache:

Wenn ein Überläufer gelöscht werden soll, werden erst mal alle Überläufer gelöscht und dann anschließend alle Überläufer bis auf den zu löschenden in die Hashtabelle zurückgeschrieben.

Habe ich das so richtig verstanden? Kommt im Skriptum finde ich nicht ganz klar rüber (siehe Abb 5.4 - Seite 103)

the_unclean
26-05-2003, 17:11
Folgende Sache:

Wenn ein Überläufer gelöscht werden soll, werden erst mal alle Überläufer gelöscht und dann anschließend alle Überläufer bis auf den zu löschenden in die Hashtabelle zurückgeschrieben.

Habe ich das so richtig verstanden? Kommt im Skriptum finde ich nicht ganz klar rüber (siehe Abb 5.4 - Seite 103)

ich denke das hast du falsch verstanden, meines erachtens nach wird für den fall, daß der zu löschende wert irgendwo innerhalb der tabelle ist, der verweis auf den nachfolger des elements vor dem zu löschenden auf den nachfolger des zu löschenden übertragen...
Das heißt das elmenet wird sozusagen ausgeklammert, bleibt aber im datensatz
das passiert in den zeilen 5-7 von algo 35

in die falls abfrage aus zeile 9 kommt er nur rein denk ich, wenn q ==NULL, daher wenn er in die solange schleife garned reingekommen ist, und das zu löschende El gleich das erste in der liste ist( es muss das erste sein, denn der fall daß er das element nicht findet, daher daß (p.key !=k) für alle elmenet nicht stimmt und das q=NULL weil er aus dem datensatz rausgelaufen ist, kann nicht existieren)
und dann wird der wert dieses elmenets mit dem wert des Nachfolgers überschrieben

Liege ich da falsch?
ich denke so ungefähr sollte das stimmen
mfg, maz