2012-04-12 51 views
-2

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

什么是你的行为问题?会更好,如果你开始,然后来到这里,当你有一个特定的问题:) – chikuba 2012-04-12 23:30:35

+1

散列表是一个二维数组,但你总是引用它作为一维;为什么?在分配给hashTable [index]之后,立即检查它是否为0(您刚刚投保它不是)。至少一致的缩进会有所帮助。 – 2012-04-12 23:33:38

+0

是的,我注意到Hunter先生,我会继续努力,并在几个小时内返回结果。谢谢 – jwill22 2012-04-12 23:43:21

回答

0

看起来你越来越接近它了。你有大部分需要的代码行。他们并不是都在正确的地方,必然。并非全部正确。

你可能想在你的代码的位置更努力,你要设置hashTable[index] = Partnumber[i];

想必这简化版,编译只是还没有。你想把Quantitynumber[i]分配给什么吗?我认识到这仅仅是一个玩具的例子,但是当我对这些东西进行评分时,我会使用数字值15和19来停靠你,而不是将它们放在变量或常量中(更好):

const int partCount = 15; 

int Quantitynumber[partCount];