資料結構 雜湊表

2021-09-24 20:28:43 字數 2382 閱讀 4448

雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字對應乙個儲存位置。

採用自定義結構體儲存使用者的資訊包括姓名、**、住址。使用者的**號碼作為該使用者資訊的關鍵字。**如下:

#ifndef hash_table_h_

#define hash_table_h_

#include #include #include #define hash_size 12

#define name_size 16

#define address_size 16

typedef structperson;

typedef structhash,*hash_code;

void inithashtable(hash_code h);

void searchhash(hash_code h);

void add_person(hash_code h);

void show_person(hash_code h);

void delet_pereson(hash_code h);

#endif

1:初始化雜湊表:

//初始化雜湊表

void inithashtable(hash_code h)

}

2:新增使用者,採用除模取餘法為每個關鍵字找到對應的儲存位置,當發生衝突時採用線性探測法為關鍵字繼續尋找對應儲存位置。**如下:

//新增使用者

void add_person(hash_code h)

person p;

printf("請輸入使用者**號碼:\n");

scanf("%u", &p.tel);

printf("請輸入使用者姓名:\n");

scanf(" %s", p.name);

printf("請輸入使用者住址:\n");

scanf("%s", p.address);

int addr = p.tel % hash_size;//除模取餘法求儲存位置

while (h->elem[addr].tel != 0)

if (h->elem[addr].tel == 0)

}

2:查詢使用者,根據使用者輸入的**號碼繼續採用除模取餘法得到儲存位置,訪問該儲存位置的使用者資訊的**號碼若不相同採用線性探測法為關鍵字繼續尋找對應儲存位置,當雜湊表中每個儲存位置都訪問後無與使用者相匹配的資訊則判斷無該使用者。**如下:

//查詢使用者

void searchhash(hash_code h)

printf("請輸入要查詢使用者的**號碼:\n");

unsigned int tele;

scanf("%u", &tele);

int addr = tele%hash_size;//除模取餘法求儲存位置

int temp = addr;

while (h->elem[addr].tel != tele)

} if (h->elem[addr].tel == tele)

}

3:顯示全部使用者資訊:

//顯示全部使用者資訊

void show_person(hash_code h)

printf("共有%d個使用者,使用者資訊如下:\n", h->count);

int i = 0;

for (i = 0; i < hash_size; i++)

}}

4:刪除使用者:

//刪除使用者

void delet_pereson(hash_code h)

printf("請輸入要刪除使用者的**號碼:\n");

unsigned int tele;

scanf("%u", &tele);

int addr = tele%hash_size;//除模取餘法求儲存位置

int temp = addr;

while (h->elem[addr].tel != tele)

}if (h->elem[addr].tel == tele)

}程式執行開始先將雜湊表中每個元素的關鍵字初識化為零,將新增聯絡人和查詢聯絡人功能封裝成函式體,每個函式體對應乙個選項,將所有功能以索引的形式呈現給使用者,當使用者選擇某一索引時,就執行當前索引對應的函式體。**如下:

#define _crt_secure_no_warnings 1

#include "hash_table.h"

void menue()

int main()

} system("pause");

return 0;

}

資料結構 雜湊表

1.雜湊表的定義 元素的儲存位置和它的關鍵碼之間建立乙個確定的對應關係h,使得每個關鍵碼key和唯一的儲存位置h key 相對應。在查詢時,根據這個確定的對應關係找到給定值k的對映h k 若查詢集合中存在這個記錄,則必定在h k 的位置上,這種查詢技術稱為雜湊技術。採用雜湊技術將記錄儲存在一塊連續的...

資料結構 雜湊表

雜湊表的定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把 關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的 速度。這個對映函式叫做雜湊函式,存放 記錄的陣列叫做雜湊表。雜湊函式的析構方法 餘數法 取關鍵字被某個不大於雜...

資料結構 雜湊表

3 雜湊函式 數字分析法 根據關鍵碼在各個位上的分布情況,選取分布比較均勻的若干位組成雜湊位址。適用情況 能預先估計出全部關鍵碼的每一位上各種數字出現的頻度,不同的關鍵碼集合需要重新分析。4 雜湊函式 平方取中法 對關鍵碼平方後,按照雜湊表大小,取中間的若干位作為雜湊位址 平方後擷取 適用情況 實現...