/為班級30個人的姓名設計乙個雜湊表,假設姓名用漢語拼音表示。要求用除留餘數法
構造雜湊函式,用線性探測再雜湊法處理衝突,平均查詢長度的上限為2。
編寫資料結構和演算法來實現。要求:將雜湊函式和處理衝突方法分別封裝為2個函式。
提交實驗報告/
程式分析
1、將姓名表各個名字得ascii碼相加求和。
2、建立雜湊表,將ascii碼取余得key值,若未發生衝突存入雜湊表
3、發生衝突呼叫衝突函式。進行線性探測。最後存入雜湊表。
#define hash_size 50
//雜湊表的長度
#define name_size 30
//名字表長度
#define r 49
//小於雜湊表長度的r
//int i,key;
struct name
;struct hash
;name namelist [name_size]
;hash hashtable [hash_size]
;void init_namelistlist ();
//初始化姓名表
void c_hashtable ();
//建立hash表
void collison (
int i )
;//衝突函式,第i個姓名表發生衝突
void print_namelist ();
void print_hash ();
//列印函式
#include
#include
//toascii函式
void
init_namelist()
}void collison (
int i)}if
(hashtable[key]
.s==0)
}void
c_hashtable()
//建立雜湊函式
for(i=
0;i)else
//發生衝突
collison ( i )
;//呼叫衝突函式}}
void
show()
void print_namelist ()}
void print_hash (
) asl=asl/name_size;
printf
("asl:%f\n"
,asl);}
intmain()
}return0;
}
雜湊表 雜湊表
一 定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。雜湊表的做法其實很簡單,就是把key通過乙個固定的演算法函式...
雜湊表(雜湊表)
雜湊表是最基礎的資料結構之一,利用鍵值對儲存並檢索資料的一種非線性結構。在其它各種結構線性表 樹等資料結構中,記錄在結構中的位置是隨機的,和記錄關鍵字之間不存在確定的關係,因此,在結構中查詢記錄時需進行一系列和關鍵字的 比較 的基礎上。在順序查詢時,比較的結果為 與 兩種可能 在折半查詢 二叉排序樹...
雜湊表(雜湊表)
原文 雜湊表是種資料結構,它可以提供快速的插入操作和查詢操作。第一次接觸雜湊表時,它的優點多得讓人難以置信。不論雜湊表中有多少資料,插入和刪除 有時包括側除 只需要接近常量的時間即0 1 的時間級。實際上,這只需要幾條機器指令。對雜湊表的使用者一一人來說,這是一瞬間的事。雜湊表運算得非常快,在電腦程...