PDA

View Full Version : [Frage] hashverfahren einfügen


nightstepper
18-05-2004, 13:08
ich verstehe den algorithmus einfügen nicht ganz:

einfügen (T,p)
1:pos = hash(p.key);
2:p.next = T[pos];
3:T[pos] = p;

ich versuche das ganze einmal zu beschreiben:

T ist die hashtabelle. p ist der wert der eingefüht wird.
1: mit hash(p.key) wird die spalte in die eingefügt werden muss berechet. dieser wert wird der variablen pos zugewiesen.
zb. p.key = 17
pos = 3
für eine beliebige hashfunktion die genau dieses ergebnis liefert.

2: hier wir p.next die werte die sich in spalte drei befinden zugewiesen.

angenommen es sind schon zwei werte gespeichert. 34 und 12. wie wird dann die zweite zeile abgearbeitet?

3: da ich die zweite zeile nicht verstehe vertehe ich die dritte schon garnicht. :mad:

wahrscheinlich ist das ganze idiotensicher aber kann mir das bitte jemand erklären!

Merlin
18-05-2004, 13:13
ja ,ist es.
Du willst p einfügen.
Dort steht aber schon ein Element.

Da du p gleich einfügen wirst, soll dieses dann dein Nachfolger sein.
Das fixierst du zuerst einmal mittels p.next = T[pos].key

Jetzt kannst du es beruhigt an dessen Stelle setzen, da es jetzt nicht gelöscht wird, da du ja mittels eines Zeigers definiert hast, dass es der Nachfolger ist....

nightstepper
18-05-2004, 13:21
ich danke dir!