Implementierung assoziativer Arrays III

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]

Hashes.om
PROCEDURE HashVal(hash: Hash;
                  object: Objects.Object) : HashValue;
   (* converts provided hash value into a hash value inside
      our range of [0..tabsize-1]
   *)
BEGIN
   RETURN
      SHORT(SYSTEM.LSH(1327217883 * hash.hashval(object),
                       logtabsize - 32))
END HashVal;

PROCEDURE Find(hash: Hash; key: Objects.Object;
               VAR hashval: HashValue;
               VAR entry, predecessor: Entry) : BOOLEAN;
BEGIN
   hashval := HashVal(hash, key);
   entry := hash.bucket[hashval]; predecessor := NIL;
   WHILE (entry # NIL) & ~hash.equal(entry.object, key) DO
      predecessor := entry; entry := entry.next;
   END;
   RETURN entry # NIL
END Find;

*HashVal bildet einen INTEGER-Wert, den die typabhängige Hash-Funktion liefert, in den Indexbereich der Hash-Tabelle ab.
 
*Find sucht nach key innerhalb von hash. Diese Prozedur wird von Acceptable, Insert, Delete und Lookup verwendet.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999