-int *new_hash_table(int hash_table_size) {
- int *result, k;
- result = (int *) malloc(hash_table_size * sizeof(int));
- for(k = 0; k < hash_table_size; k++) {
- result[k] = -1;
+typedef struct {
+ int size;
+ int *entries;
+} hash_table_t;
+
+hash_table_t *new_hash_table(int size) {
+ int k;
+ hash_table_t *hash_table;
+
+ hash_table = (hash_table_t *) malloc(sizeof(hash_table_t));
+
+ hash_table->size = size;
+ hash_table->entries = (int *) malloc(hash_table->size * sizeof(int));
+
+ for(k = 0; k < hash_table->size; k++) {
+ hash_table->entries[k] = -1;