hsearch() ist eine Suchfunktion für Hash-Tabellen. Sie gibt einen Zeiger in eine Hash-Tabelle zurück, der die Stelle anzeigt, an der ein Eintrag gefunden wurde. Die von hsearch() benutzte Vergleichsfunktion ist strcmp() . item ist eine Struktur des in der Include-Datei search.h definierten Typs ENTRY , die zwei Zeiger enthält: item.key weist auf den Vergleichsschlüssel (vom Typ char *) , und item.data (void *) weist auf alle anderen Daten in Zusammenhang mit diesem Schlüssel.
Erweiterung Zeiger auf Typen, die nicht void sind, sind zu Zeigern auf void umzuwandeln. (Ende) action ist ein Element des Aufzählungstyps ACTION (definiert in search.h ), das die Behandlung des Eintrags angibt, wenn dieser nicht in der Tabelle gefunden werden kann. ENTER zeigt an, dass item an einem geeigneten Punkt in die Tabelle eingetragen werden soll. Erweiterung Ist ein Duplikat eines existierenden Eintrags vorhanden, so wird der neue Eintrag nicht eingetragen und hsearch() gibt den Zeiger zu dem existierenden Eintrag zurück. (Ende) FIND zeigt an, dass kein Eintrag vorgenommen werden soll. Eine erfolglose Suche wird durch die Rückgabe eines Nullzeigers gemeldet.
hcreate() weist ausreichend Speicher für die Tabelle zu und muss vor hsearch() aufgerufen werden. nel schätzt die größtmögliche Anzahl von Einträgen, die eine Tabelle enthalten wird. Diese Zahl kann durch den Algorithmus nach oben justiert werden, damit bestimmte, mathematisch günstige Umstände erreicht werden.
hdestroy() zerstört die Suchtabelle. Ein weiterer Aufruf von hcreate() kann folgen. Nach einem Aufruf von hdestroy() kann auf die Tabelle nicht mehr zugegriffen werden.
|