哈希表的一个应用



# <stdio.h>
# <conio.h>
# <ctype.h>
# L 50 /*定义哈希表长*/
# M 47 /*定义p值*/
# N 30 /*定义名单长*/
char z[22];
struct old{char *name;char *py; k;};
struct old oldlist[L];/*原始表*/
struct hterm
{ char *name;char *py;
k; si;
};
struct hterm hlist[L];/*哈希表*/
i,adr,sum,d;
char ch1;
float average;
/**********************************/
void chash
{for (i=0;i<L;i)
{hlist[i].name=\"\";
hlist[i].py=\"\";
hlist[i].k=0;
hlist[i].si=0;
};
for (i=0;i<N;i)
{ sum=0;
adr=(oldlist[i].k)%M;
d=adr;
(hlist[adr].si0)
{hlist[adr].k=oldlist[i].k;
hlist[adr].name=oldlist[i].name;
hlist[adr].py=oldlist[i].py;
hlist[adr].si=1;
}

{do
{d=(d+((oldlist[i].k))%10+1)%M;/*伪随机*/
sum=sum+1;
}
while (hlist[d].k!=0);
hlist[d].k=oldlist[i].k;
hlist[d].name=oldlist[i].name;
hlist[d].py=oldlist[i].py;
hlist[d].si=sum+1;
}
}
}

/***************************************/
void findhlist
{ s0;char r,g;
clrscr;/*清屏*/
for (r=0;r<20;r){z[r]=0;};
gotoxy(1,1);prf(\"查找:copyright by 姚建飞 2003.6\");
gotoxy(5,10);prf(\"请拼音后回车!\");
gotoxy(5,12);scanf(\"%s\",z);
s0=0;
for (r=0;r<20;r){s0=z[r]+s0;};
gotoxy(5,13); prf(\"%d\",s0);
/*for (i=0;i<L;i)*/
sum=1;
adr=s0%M;
d=adr;
(hlist[adr].ks0)
{
gotoxy(18,18);prf(\" \");
gotoxy(18,18);prf(\"%s\",hlist[d].name);
gotoxy(18,19);prf(\"%s\",hlist[d].py);
gotoxy(18,20);
prf(\"搜索 %d 次\",sum);
getch;
}

{ (hlist[adr].k0)
{gotoxy (18,18);
prf(\"无记录! \");
getch;
}

{g=0;
for (i=0;g0;i)
{d=(d+s0%10+1)%M; /*伪随机*/
sum=sum+1;
(hlist[d].k0)
{gotoxy (18,18);
prf(\"无记录! \");
g=1;getch;
};
gotoxy(18,18);
prf(\"%s\",hlist[d].name);
gotoxy(18,19);
prf(\"%s\",hlist[d].py);
gotoxy(18,20);
prf(\"搜索 %d 次\",sum);
getch;
(hlist[d].ks0)
{ g=1;
gotoxy(18,21);
prf(\"搜索 %d 次成功!\",sum);
getch;
};
};



};

};

}


/***************************************/
void inp /*输入表*/
{
char *f;
r,s0;

oldlist[0].name=\"桂芳芳\";oldlist[0].py=\"guanfan\";
oldlist[1].name=\"姚建飞\";oldlist[1].py=\"yaojianfei\";
oldlist[2].name=\"杨扬\";oldlist[2].py=\"yangyang\";
oldlist[3].name=\"朱玉环\";oldlist[3].py=\"zhuyuhuang\";
oldlist[5].name=\"陈曦\";oldlist[5].py=\"chenxi\";
oldlist[6].name=\"张雷\";oldlist[6].py=\"zhanglei\";
oldlist[7].name=\"盛永海\";oldlist[7].py=\"shenyonghai\";
oldlist[8].name=\"陈道全\";oldlist[8].py=\"chengdaoquan\";
oldlist[9].name=\"陆道清\";oldlist[9].py=\"ludaoqing\";
oldlist[10].name=\"龚云祥\";oldlist[10].py=\"gongyunxiang\";
oldlist[11].name=\"孙振兴\";oldlist[11].py=\"sunzhenxing\";
oldlist[12].name=\"孙容飞\";oldlist[12].py=\"sunrongfei\";
oldlist[13].name=\"孙明龙\";oldlist[13].py=\"sunminglong\";
oldlist[14].name=\"张浩\";oldlist[14].py=\"zhanghao\";
oldlist[15].name=\"田苗\";oldlist[15].py=\"tianmiao\";
oldlist[16].name=\"姚建中\";oldlist[16].py=\"yaojianzhong\";
oldlist[17].name=\"姚建清\";oldlist[17].py=\"yaojianqing\";
oldlist[18].name=\"姚建华\";oldlist[18].py=\"yaojianhua\";
oldlist[19].name=\"张海峰\";oldlist[19].py=\"yaohaeng\";
oldlist[20].name=\"陈言号\";oldlist[20].py=\"chengyanhao\";
oldlist[21].name=\"姚秋锋\";oldlist[21].py=\"yaoqiufeng\";
oldlist[22].name=\"钱鹏程\";oldlist[22].py=\"qianpengcheng\";
oldlist[23].name=\"姚海峰\";oldlist[23].py=\"yaohaeng\";
oldlist[24].name=\"卞艳\";oldlist[24].py=\"bianyan\";
oldlist[25].name=\"凌蕾\";oldlist[25].py=\"linglei\";
oldlist[26].name=\"李伟\";oldlist[26].py=\"liwei\";
oldlist[27].name=\"黄海燕\";oldlist[27].py=\"huanhaiyan\";
oldlist[28].name=\"刘殿琴\";oldlist[28].py=\"liudianqin\";
oldlist[29].name=\"李云\";oldlist[29].py=\"liyun\";

/*
请在此输入数据,同时修改开头 M L N





*/
for (i=0;i<N;i)
{
s0=0;
f=oldlist[i].py;

for (r=0;*(f+r) != \'\\0\';r){s0=*(f+r)+s0;};

oldlist[i].k=s0;


};

}



/****************************************/
void dhash /*显示哈希表*/
{ char LON=17;
clrscr;
(LON>L){LON=L;};
gotoxy(1,1);prf(\"哈希表:copyright by 姚建飞 2003.6\");
gotoxy(1,2);prf(\"地址:\");
for(i=0;i<LON;i)
{gotoxy(1,i+3);
prf(\"%-3d\",i);
};
gotoxy(9,2);prf(\"关键字:\");
for(i=0;i<LON;i)
{gotoxy(10,i+3);
prf(\"%-6d\",hlist[i].k);
};
gotoxy(19,2);prf(\"姓名:\");
for(i=0;i<LON;i)
{gotoxy(19,3+i);
prf(\"%s\",hlist[i].name);
};
gotoxy(28,2);prf(\"拼音:\");
for(i=0;i<LON;i)
{gotoxy(28,i+3);
prf(\"%s\",hlist[i].py);
};
gotoxy(40,2);prf(\"搜索长度:\");
for(i=0;i<LON;i)
{gotoxy(43,i+3);
prf(\"%2d\",hlist[i].si);
};
gotoxy(53,2);prf(\"H(key):\");
for(i=0;i<LON;i)
{gotoxy(53,i+3);
prf(\"%2d\",(hlist[i].k)%M);
};
average=0;
for (i=0;i<L;i)
{average=average+hlist[i].si;};
average=average/N;
gotoxy(10,23);
prf(\"平均搜索长度:ASL(%d)=%f\",N,average);

gotoxy(20,24);
prf(\"任意键下屏!\");
ch1=getch;


(L>15)
{
clrscr;
(LON>L-15){LON=L-15;};
gotoxy(1,1);prf(\"哈希表:copyright by 姚建飞 2003.6\");
gotoxy(1,2);prf(\"地址:\");
for(i=0;i<LON;i)
{gotoxy(1,i+3);
prf(\"%-3d\",i+15);
};
gotoxy(9,2);prf(\"关键字:\");
for(i=0;i<LON;i)
{gotoxy(10,i+3);
prf(\"%-6d\",hlist[i+15].k);
};
gotoxy(19,2);prf(\"姓名:\");
for(i=0;i<LON;i)
{gotoxy(19,3+i);
prf(\"%s\",hlist[i+15].name);
};
gotoxy(28,2);prf(\"拼音:\");
for(i=0;i<LON;i)
{gotoxy(28,i+3);
prf(\"%s\",hlist[i+15].py);
};
gotoxy(40,2);prf(\"搜索长度:\");
for(i=0;i<LON;i)
{gotoxy(43,i+3);
prf(\"%2d\",hlist[i+15].si);
};
gotoxy(53,2);prf(\"H(key):\");
for(i=0;i<LON;i)
{gotoxy(53,i+3);
prf(\"%2d\",(hlist[i+15].k)%M);
};
average=0;
for (i=0;i<L;i)
{average=average+hlist[i].si;};
average=average/N;
gotoxy(10,23);
prf(\"平均搜索长度:ASL(%d)=%f\",N,average);



gotoxy(20,24);
prf(\"任意键下屏! \");
ch1=getch;
};
(L>30)
{
clrscr;
(LON>L-30){LON=L-30;};
gotoxy(1,1);prf(\"哈希表:copyright by 姚建飞 2003.6\");
gotoxy(1,2);prf(\"地址:\");
for(i=0;i<LON;i)
{gotoxy(1,i+3);
prf(\"%-3d\",i+30);
};
gotoxy(9,2);prf(\"关键字:\");
for(i=0;i<LON;i)
{gotoxy(10,i+3);
prf(\"%-6d\",hlist[i+30].k);
};
gotoxy(19,2);prf(\"姓名:\");
for(i=0;i<LON;i)
{gotoxy(19,3+i);
prf(\"%s\",hlist[i+30].name);
};
gotoxy(28,2);prf(\"拼音:\");
for(i=0;i<LON;i)
{gotoxy(28,i+3);
prf(\"%s\",hlist[i+30].py);
};
gotoxy(40,2);prf(\"搜索长度:\");
for(i=0;i<LON;i)
{gotoxy(43,i+3);
prf(\"%2d\",hlist[i+30].si);
};
gotoxy(53,2);prf(\"H(key):\");
for(i=0;i<LON;i)
{gotoxy(53,i+3);
prf(\"%2d\",(hlist[i+30].k)%M);
};
average=0;
for (i=0;i<L;i)
{average=average+hlist[i].si;};
average=average/N;
gotoxy(10,23);
prf(\"平均搜索长度:ASL(%d)=%f\",N,average);

gotoxy(20,24);
prf(\"任意键下屏! \");
ch1=getch;
};
(L>45)
{
clrscr;
(LON>L-45){LON=L-45;};
gotoxy(1,1);prf(\"哈希表:copyright by 姚建飞 2003.6\");
gotoxy(1,2);prf(\"地址:\");
for(i=0;i<LON;i)
{gotoxy(1,i+3);
prf(\"%-3d\",i+45);
};
gotoxy(9,2);prf(\"关键字:\");
for(i=0;i<LON;i)
{gotoxy(10,i+3);
prf(\"%-6d\",hlist[i+45].k);
};
gotoxy(19,2);prf(\"姓名:\");
for(i=0;i<LON;i)
{gotoxy(19,3+i);
prf(\"%s\",hlist[i+45].name);
};
gotoxy(28,2);prf(\"拼音:\");
for(i=0;i<LON;i)
{gotoxy(28,i+3);
prf(\"%s\",hlist[i+45].py);
};
gotoxy(40,2);prf(\"搜索长度:\");
for(i=0;i<LON;i)
{gotoxy(43,i+3);
prf(\"%2d\",hlist[i+45].si);
};
gotoxy(53,2);prf(\"H(key):\");
for(i=0;i<LON;i)
{gotoxy(53,i+3);
prf(\"%2d\",(hlist[i+45].k)%M);
};
average=0;
for (i=0;i<L;i)
{average=average+hlist[i].si;};
average=average/N;
gotoxy(10,23);
prf(\"平均搜索长度:ASL(%d)=%f\",N,average);

gotoxy(20,24);
prf(\"任意键返回! \");
ch1=getch;
};

}
/**************************************/
void
{inp; /*输入原表*/
chash ;/*建哈希表*/
a: clrscr;
gotoxy(21,2);
textcolor(GREEN);
cprf(\"欢迎使用本------------编者:姚建飞\");
prf(\"\\n\");
gotoxy(22, 4);
textcolor(GREEN);
cprf(\" 1. 显示哈希表\");
prf(\"\\n\");
gotoxy(22, 6);
textcolor(GREEN);
cprf(\" 2. 查找\");
prf(\"\\n\");
gotoxy(22, 8);
textcolor(GREEN);
cprf(\" x. 退出\");
prf(\"\\n\");
gotoxy(22, 12);
cprf(\" 请输入选择: \");
prf(\"\\n\");
gotoxy(24,14);
ch1=getch;
(ch10x78){ textcolor(GREEN);
cprf(\"谢谢使用本,你已经退出本!\");prf(\"\\n\"); exit;};/*\"x\":退出*/
(ch10x31){dhash;};/*表属性*/
(ch10x32){ findhlist;};/*查找*/
goto a;



}



=span_ad>





Tags: 

延伸阅读

最新评论

发表评论