資源簡介
對于給定的一組整數和散列函數,分別采用線性探測法和拉鏈法處理沖突構造散列表,并在這兩種方法構建的散列表中查找整數K,比較兩種方法的時間和空間性能。
代碼片段和文件信息
#?include?
#?include?
#?include?
#?define?max?100
typedef?struct
{int?key;
?char?data;
}ElemType;?????//定義結點類型
typedef?struct
{ElemType?elems[max];
?int?len;
}HashTable;??????//定義散列表類型
int?stored[max];??//標志數組
typedef?struct?ElemNode{
int?key;
ElemType?data;
struct?ElemNode?*next;
}ElemNode;
typedef?struct{
ElemNode?*first;
int?len;
}ElemHeaderhashtable[max];
HashTable?initHashTable(int?n)?????//ht:散列表???n:散列表長度
{int?i;HashTable?ht;
?ht.len=n;
?for(i=0;i ?stored[i]=0;
?return?ht;
}
int?Hash(HashTable?htint?k)
{return?k%ht.len;}
HashTable?insert(HashTable?htint?x)???//ht:散列表???ele:插入結點
{int?iadd;
?i=Hash(htx);
?if(stored[i]==0)
?{ht.elems[i].key=x;
?stored[i]=1;}
?else?{add=i;i=(i+1)%ht.len;
?while(i!=add&&stored[i]==1)??i=(i+1)%ht.len;
?if(stored[i]==0)
?{ht.elems[i].key=x;stored[i]=1;}?
?else?printf(“error?occurred!“);
?}
?return?ht;
}
int?search(HashTable?htint?x)??//ht:散列表?
評論
共有 條評論