创建哈希表及查找(拉链法)
创建哈希表及查找(拉链法)
创建哈希表及查找(拉链法)
void CreateHash(HashTable HT], int n) {
int hash_tableP];
int temp;
for(int i=0; i<n; i++)
cin >> hash_tablei];
for(int i=0; i<n; i++) {
temp = hash_tablei] % P;
if(HTtemp]==NULL) {
HTtemp] = (HashTable)malloc(sizeof(HashNode));
HashTable p = (HashTable)malloc(sizeof(HashNode));
p->key = hash_tablei];
HTtemp]->next = p;
p->next = NULL;
} else {
HashTable p = (HashTable)malloc(sizeof(HashNode));
p = HTtemp];
while(p->next!=NULL) {
p = p->next;
}
HashTable q = (HashTable)malloc(sizeof(HashNode));
q->key = hash_tablei];
p->next = q;
q->next = NULL;
}
}
}
float ASL(HashTable HT]) {
double sum=0, len=0;
for(int i=0; i<P; i++) {
if(HTi] == NULL)
continue;
int cnt=1;
HashTable p = (HashTable)malloc(sizeof(HashNode));
p = HTi];
while(p->next!=NULL) {
p = p->next;
sum+=cnt;
cnt++;
len++;
}
}
return sum/len;
}