#include <stdio.h>
#define SIZE 1000
typedef struct {
int key;
int value;
} Entry;
typedef struct {
Entry *entries[SIZE];
} HashTable;
int hash(int key) {
return key % SIZE;
}
void initHashTable(HashTable *ht) {
for (int i = 0; i < SIZE; i++) {
ht->entries[i] = NULL;
}
}
void insert(HashTable *ht, int key, int value) {
int index = hash(key);
while (ht->entries[index] != NULL && ht->entries[index]->key != key) {
index = (index + 1) % SIZE;
}
if (ht->entries[index] != NULL) {
ht->entries[index]->value += value;
} else {
Entry *newEntry = (Entry*)malloc(sizeof(Entry));
newEntry->key = key;
newEntry->value = value;
ht->entries[index] = newEntry;
}
}
int search(HashTable *ht, int key) {
int index = hash(key);
while (ht->entries[index] != NULL && ht->entries[index]->key != key) {
index = (index + 1) % SIZE;
}
if (ht->entries[index] != NULL) {
return ht->entries[index]->value;
} else {
return 0;
}
}
int main () {
HashTable ht;
initHashTable(&ht);
insert(&ht, 1001, 1);
insert(&ht, 1002, 2);
insert(&ht, 1001, 1);
insert(&ht, 1003, 3);
printf("投票1001的数量: %d\n", search(&ht, 1001));
printf("投票1002的数量: %d\n", search(&ht, 1002));
printf("投票1003的数量: %d\n", search(&ht, 1003));
return 0;
}