2012-04-12 48 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];