姓名雜湊表

2021-10-07 04:04:16 字數 1281 閱讀 7971

/為班級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 的時間級。實際上,這只需要幾條機器指令。對雜湊表的使用者一一人來說,這是一瞬間的事。雜湊表運算得非常快,在電腦程...