Add get / set functions

No collision handeling yet!
This commit is contained in:
XOR 2023-03-29 16:40:09 +02:00
parent 21dcb50d79
commit 6ae406787a

22
main.c
View file

@ -14,7 +14,7 @@
typedef struct
{
unsigned int *transformation_table;
void *hash_table;
int *hash_table;
unsigned int table_size;
}shash_hashtable_t;
@ -29,7 +29,7 @@ void shash_init_hashtable(shash_hashtable_t *hashtable, unsigned int table_size)
}
hashtable->transformation_table = table;
hashtable->hash_table = malloc(table_size * sizeof(void *));
hashtable->hash_table = malloc(table_size * sizeof(int));
hashtable->table_size = table_size;
}
@ -46,10 +46,17 @@ unsigned int shash_hash(char *key, unsigned int len, shash_hashtable_t *hashtabl
return hash_word % hashtable->table_size;
}
void shash_set(char *key, unsigned int len, shash_hashtable_t *hashtable)
void shash_set(char *key, unsigned int len, int value, shash_hashtable_t *hashtable)
{
//unsigned int hash = shash_hash(key, len, 1000,[1,]);
//printf("%u\n", hash);
unsigned int hash = shash_hash(key, len, hashtable);
hashtable->hash_table[hash] = value;
}
int shash_get(char *key, unsigned int len, shash_hashtable_t *hashtable)
{
unsigned int hash = shash_hash(key, len, hashtable);
int value = hashtable->hash_table[hash];
return value;
}
int main(void)
@ -58,7 +65,10 @@ int main(void)
shash_hashtable_t hashtable;
shash_init_hashtable(&hashtable, 100);
printf("%d\n", shash_hash("INC",3,&hashtable));
shash_set("INC", 3, 41, &hashtable);
int retrieved_val = shash_get("INC", 3, &hashtable);
printf("Stored value %d at INC\n", retrieved_val);
return 0;
}