Add get / set functions
No collision handeling yet!
This commit is contained in:
parent
21dcb50d79
commit
6ae406787a
1 changed files with 16 additions and 6 deletions
22
main.c
22
main.c
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue