#include #include #include #include #define MAX_CHANNUM 1024 u_int32_t hash_function(void *key, u_int32_t number_of_buckets) { // return hash_hash_int(key, number_of_buckets); return hash_hash_string(key, number_of_buckets); // вызывается по-умолчанию, если hash_function=NULL в hash_initialise() } int compare_keys(void *key1, void *key2) { // return hash_compare_int(key1, key2); return hash_compare_string(key1, key2); // вызывается по-умолчанию, если compare_keys=NULL в hash_initialise() } int duplicate_key(void **destination, void *source) { // hash_copy_int(destination, source); hash_copy_string(destination, source); // вызывается по умолчанию, если duplicate_key=NULL в hash_initialise() return 0; } void free_key(void *key) { void *warnings_stub = key; warnings_stub = warnings_stub; } void free_value(void *value) { void *warnings_stub = value; warnings_stub = warnings_stub; } int main() { u_int32_t nch = 5; struct hash h; //~ hash_initialise(&h, 2 * nch, NULL, NULL, NULL, NULL, NULL); // пример работы с ключом-строкой hash_initialise(&h, 2 * nch, hash_function, compare_keys, duplicate_key, free_key, free_value); hash_insert(&h, "Shashkin", "Kolan"); hash_insert(&h, "Iljin", "Egor"); hash_insert(&h, "Korsakov", "Kostya"); hash_insert(&h, "Sinelnikov", "Alexandr"); hash_insert(&h, "Kochetkov", "Sergey"); hash_insert(&h, "Bovykin", "Sergey"); hash_insert(&h, "Novikov", "Alexey"); char *val_ptr; hash_retrieve(&h, "Kochetkov", (void **)&val_ptr); printf("Kochetkov = %s\n", val_ptr); hash_deinitialise(&h); return 0; }