c語言雜湊表電子辭典 C語言雜湊表

2021-10-13 04:14:12 字數 2247 閱讀 2806

//功能,利用雜湊表製作**查詢系統,根據姓名查詢**

//建立了雜湊表之後,我想列印出這個表,但是沒輸出結果

#include

#include

#include

#include

#define maxsize 5

#define namelength 20

#define phonelength 15

typedef struct

char name[namelength];

char phone[phonelength];

}person[maxsize];

typedef structhash;

int d[12]=;

void create_hash(char* file_name,hash &h)

//file_name表示的是檔案名字

void inserthash_name(hash &h,char name,char phone);

ifstream in;

char name[namelength]="";

char phone[phonelength]="";

in.open(file_name);

if(in.fail())

printf("檔案開啟失敗!\n");

exit(1);

while(!in.eof()){

char str[100];

strcpy(name,"");

strcpy(phone,"");

in.getline(str,100,'\n');

if(str[0]=='*')

break;//結束檔案

for(int i=0;str[i]!=' ';i++)

name[i]=str[i];

while(str[i]==' ')

i++;

for(int j=0;str[i]!=' ';j++,i++)

phone[j] = str[i];

inserthash_name(h,name,phone);

delete str;

in.close();

void inserthash_name(hash &h,char name[namelength],char phone[phonelength])

int collision(hash h,int key,int i);

int hash(char name[namelength]);

int i=0; //記錄衝突的次數

int key = hash(name);

while(h.sign[key] == 1)

key=collision(h,key,i++);

if(key == -1)

exit(1);

h.number++;

strcpy(h.per[key].name,name);

strcpy(h.per[key].phone,phone);

h.sign[key] = 1;

//處理衝突

int collision(hash h,int key,int i){

int x;

if(h.sign[key])

x=(key+d[i]) % maxsize;

return x;

return -1;

int hash(char name[namelength])

int h;

int temp;

char *p;

h=0;

for(p =name; *p; p++){

temp = (int)*p;

h = h + temp;

h=h % maxsize;

return h;

void main(){

void create_hash(char* file_name,hash &h);

hash h;

int j,s;

for(j=0;j

h.sign[j] = 0;

h.number = 0;

h.size = maxsize;

char * filename = "1.txt";

create_hash(filename,h);

for(s = 0;s

printf("%s%s\n",h.per[s].name,h.per[s].phone);

展開

c語言雜湊表電子辭典 C語言實現的雜湊表實現程式

下面我們一起來看乙個c語言實現的雜湊表實現程式了,這個程式沒有過多的說明只是乙個例子,大家有興趣可以進入看看或測試一下。為了鞏固一下鍊錶知識,自己實現的乙個雜湊表,在gcc 4.4.7下編譯通過 hash.h 如下 複製 author maben date 2014 12 23 ifndef has...

C語言 雜湊表

線性探測法 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。雜湊函式 得到乙個數的hash值的函式,被稱為雜湊函式。1.整數 除留餘數法,對於大小為素數m的陣列,對於任意正整數k,計算k除以m的餘數。m一般取素數。define prime 11...

雜湊表新增(C語言(雜湊表(icoding

雜湊表新增 雜湊表 hash table,也叫雜湊表 是根據鍵 key 而直接訪問在記憶體儲存位置的資料結構。也就是說,它通過計算乙個關於鍵值的函式,將所需查詢的資料對映到表中乙個位置來訪問記錄,這加快了查詢速度。這個對映函式稱做雜湊函式,存放記錄的陣列稱做雜湊表。雜湊表相關定義如下 typedef...