Хеширование и линейное зондирование
У меня возникла проблема с хэш-функцией и алгоритмом линейного зондирования. Вот что я получил. Это для задания класса, где я должен написать программу, которая использует алгоритм хеширования для создания списка запасных частей и их количества, проданных за последний месяц. После создания хешированного списка. написать простую программу на основе меню, которая позволяет пользователю искать товар и сообщать о его проданном количестве. Я не прошу никого писать эту программу, но мне нужна помощь в создании моих функций. Спасибо за любые конструктивные советы и отзывы.:D:D
#include<iostream>
using namespace std;
int main()
{
int Partnumber[15] = {112,130,156,173,197,150,166,113,123,143,167,189,193,117,176};
int Quantitynumber[15] = {12,30,56,17,19,50,66,13,12,14,16,18,19,11,76};
int hashTable[19][2];
int collisions = 0;
for(int i = 0; i<15; i++)
{
index = (Partnumber[i] % 19);
hashTable[index] = Partnumber[i];
if (hashTable[index] != 0)
{
do {
index++
} while(hashTable[index]!=0)
}
if (index >= sizeOf(hashTable) )
index=0;
else hashTable[index] = Partnumber[i];
}
return 0;
}
1 ответ
Похоже, вы приближаетесь к этому. У вас есть большинство необходимых строк кода. Они просто не все в нужных местах, обязательно. И не все точно правильно.
Возможно, вы захотите посмотреть на места в вашем коде, где вы устанавливаете hashTable[index] = Partnumber[i];
Предположительно, это еще не скомпилировано. Вы хотите назначить Quantitynumber[i]
к чему-то?
Я признаю, что это просто игрушечный пример, но когда я оценивал такие вещи, я бы пристыковал вас за использование числовых значений 15 и 19 вместо того, чтобы помещать их в переменные или константы (лучше):
const int partCount = 15;
int Quantitynumber[partCount];