информатики и радиоэлектроники
Хеширование
Вариант 5
Минск,2020
1)задание
Создать хеш-таблицу со случайными целыми ключами и найти
запись с максимальным ключом.
2)код
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>;
typedef struct {
int* hashTable;
int* used;
}HashTab;
int main()
{
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
int i, Size = 20;
HashTab T;
int key, value;
srand(time(NULL));
Init_Table(&T, Size);
printf("Случайные значения: ");
for (i = 0; i < Size - rand() % 10; i++) {
value = rand() % (Size + 20);
printf("%d ", value);
Add(&T, value, Size);
}
printf("\nХеш-таблица\n");
print_Table(T, Size);
if (find_key_value(T, Size, &key, &value)) {
printf("\nЗапись с максимальным ключом:");
printf("ключ=%d\tзначение=%d\n", key, value);
}
else {
printf("\nТаблица пуста!\n");
}
Free_Table(&T);
return 0;
}
int find_key_value(HashTab T, int Size, int* key, int* value) {
int i;
for (i = Size - 1; i >= 0; i--) {
if (T.used[i]) {
*key = i;
*value = T.hashTable[i];
return 1;
}
}
return 0;
}
void Free_Table(HashTab* T) {
free((*T).used);
free((*T).hashTable);
}
3)консоль