哈希和线性探测

时间:2012-04-12 23:27:04

标签: c++ hash linear probing

我遇到了出现散列函数和线性探测算法的问题。这就是我得到的。这是一个课堂作业,我必须编写一个程序,使用散列算法来创建上个月销售的库存零件清单及其数量。创建散列列表后。编写一个简单的菜单驱动程序,允许用户搜索库存物品并报告其销售数量。我不是要求任何人编写这个程序,但我确实需要一些帮助来创建我的函数。感谢任何建设性的建议和反馈。 :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 个答案:

答案 0 :(得分:0)

看起来你已经接近了。您拥有大部分所需的代码行。他们不一定都是在正确的地方。而且并非完全正确。

您可能希望在代码中设置hashTable[index] = Partnumber[i];

的位置更加努力

据推测,这还不能编译。您想将Quantitynumber[i]分配给某些内容吗?

我认识到这只是一个玩具示例,但是当我对这些事情进行评分时,我会停止使用数值15和19,而不是将它们放在变量或常量中(更好):

const int partCount = 15;

int Quantitynumber[partCount];