Implementierung assoziativer Arrays

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

Hashes.om
CONST
   tabsize = 1024; logtabsize = 10;
TYPE
   Entry = POINTER TO EntryRec;
   EntryRec =
      RECORD
         object: Objects.Object;
         next: Entry; (* next entry with same hash value *)
      END;
   BucketTable = ARRAY tabsize OF Entry;
TYPE
   Hash = POINTER TO HashRec;
   HashRec =
      RECORD
         (Objects.ObjectRec)
         hashable: HashableProc;
         hashval: HashValProc;
         equal: EqualProc;
         bucket: BucketTable;
         (* for iterations: *)
         nextval: HashValue; nextentry: Entry;
      END;

*hashable, hashval und equal sind die Prozeduren, die bei Hashes.Create übergeben worden sind.
 
*bucket ist die bucket table, die mit den Hash-Werten indiziert wird und jeweils auf die Liste der Objekte mit dem gleichen Hash-Wert verweist.
 

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