-
Notifications
You must be signed in to change notification settings - Fork 0
/
nHash.c
62 lines (50 loc) · 1.25 KB
/
nHash.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/**
@AUTHOR: Yamoah Bentil
FILE: normal hashtable
***/
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h>
#include "nList.h"
#define BUCKETS (101)
typedef struct __hash_t {
list_t lists[BUCKETS];
}hash_t;
void Hash_Init(hash_t *H) {
int i;
for (i = 0; i < BUCKETS; i++) {
List_Init(&H->lists[i]);
}
}
int Hash_Insert(hash_t *H, int key) {
int bucket = key % BUCKETS;
return List_Insert(&H->lists[bucket], key);
}
int Hash_Lookup(hash_t *H, int key) {
int bucket = key % BUCKETS;
return List_Lookup(&H->lists[bucket], key);
}
int Hash_Delete(hash_t *H, int key){
int bucket = key % BUCKETS;
return List_Delete(&H->lists[bucket], key);
}
int main(int argc, char *argv[]){
printf("Hello World\n");
hash_t myHash;
Hash_Init(&myHash);
Hash_Insert(&myHash, 10);
Hash_Insert(&myHash, 1);
Hash_Insert(&myHash, 7);
Hash_Insert(&myHash, 9);
Hash_Insert(&myHash, 15);
Hash_Insert(&myHash, 20);
Hash_Lookup(&myHash, 7);
Hash_Delete(&myHash, 10);
Hash_Lookup(&myHash, 9);
Hash_Lookup(&myHash, 10);
Hash_Lookup(&myHash, 20);
return 0;
}