free(node);
}
+void my_print(void* o) {
+ Node* n = (Node *) o;
+ printf("%s", n->name);
+}
+
bool my_ptr_equal(const void* a, const void* b) {
const Node* nodea = a;
const Node* nodeb = b;
fclose(fp);
printf("Loaded %d words into the table.\n", numwords);
+ hash_table_print(table);
+ hash_table_set_print_func(table, my_print);
+ hash_table_print(table);
/*
uint32_t good_guesses = 0;
printf("%u out of %u inserted words in table were in the table\n", good_guesses, numwords);
HashtableIter iter;
- void* key/* = malloc(sizeof(void*))*/;
- void* value/* = malloc(sizeof(void*))*/;
+ void* key;
+ void* value;
hash_table_iter_init(&iter, table);
while (hash_table_iter_next(&iter, &key, &value)) {
char* s1 = ((Node*) value)->name;
printf("Key: %p value: %s\n", key, s1);
}
- //free(key);
- //free(value);
+
+ Node* node1 = calloc(sizeof(Node*), 1);
+ node1->name = strdup("Dummy Test Name");
+ if (hash_table_insert(table, node1, node1) == true) {
+ hash_table_iter_init(&iter, table);
+ printf("Hashtable size: %lu. Key found: %d\n", hash_table_size(table), hash_table_contains(table, node1));
+ void* data = hash_table_delete(table, node1);
+ printf("Deleted: [%p] %s\n", node1, ((Node*) data)->name);
+ free(((Node*) data)->name);
+ free(data);
+ printf("Hashtable size: %lu. Key found: %d\n", hash_table_size(table), hash_table_contains(table, node1));
+ Node* node2 = calloc(sizeof(Node*), 1);
+ node2->name = strdup("Test Name");
+ hash_table_replace(table, node2, node2);
+ printf("Hashtable size: %lu. Key found: %d\n", hash_table_size(table), hash_table_contains(table, node2));
+ }
+
+ hash_table_destroy(table);
+
+ table = hash_table_create(str_hash, str_equal);
+ char *names[] = { "Adam", "Eva", "Abraham", "Kain", "Abel", NULL };
+ for (int i = 0; names[i]; i++) {
+ void* name = names[i];
+ hash_table_insert(table, name, strdup(name));
+ }
+ hash_table_iter_init(&iter, table);
+ while (hash_table_iter_next(&iter, &key, &value)) {
+ printf("Key: %p value: %s\n", (char*)key, (char*)value);
+ }
+ data = hash_table_delete(table, (void*) names[4]);
+ printf("Deleted: [%p] %s\n", data, (char*) data);
+ free(data);
+ hash_table_replace(table, (void*) names[4], strdup(names[4]));
+ hash_table_replace(table, (void*) names[4], strdup("Johannes"));
+ hash_table_iter_init(&iter, table);
+ while (hash_table_iter_next(&iter, &key, &value)) {
+ printf("Key: %p value: %s\n", (char*)key, (char*)value);
+ }
hash_table_destroy(table);
}