Diseñar una tabla hash usando programación C
El siguiente es un programa que escribí en C, ¡solo como referencia!
#includelt;iostreamgt;
#includelt;stringgt;
usando el espacio de nombres std;
#define M 47 //Número aleatorio
#define n 50 //Longitud de la tabla hash
#define q 30 //Número de personas
nombre de la estructura{
char * py;
int k
};
nombre Lista de nombres[n]; p > char *py;
int k;
int si
};
hash lista[n]; p >
nombre de lista vacía()
{
char *f;
int s0, r, i
Lista de nombres; [ 0].py="baojie";
Lista de nombres[1].py="chengaoyang";
Lista de nombres[2].py="chenguangzhong";
Lista de nombres[3].py="chenliangliang";
Lista de nombres[4].py="chenyongzhou";
Lista de nombres[5].py="fengchao";
Lista de nombres[6].py="gexiangfeng";
Lista de nombres[7].py="huting";
Lista de nombres[8].py= " huangpinjin";
Lista de nombres[9].py="jiangxiaojia";
Lista de nombres[10].py="laidongjie";
Lista de nombres[11 ] .py="liyexiao";
Lista de nombres[12].py="lidaohui";
Lista de nombres[13].py="lijue";
Lista de nombres[14].py="lizhuoqun";
Lista de nombres[15].py="linfujun";
Lista de nombres[16].py="luobin"; p >
Lista de nombres[17].py="luokeqing";
Lista de nombres[18].py="nichao";
Lista de nombres[19].py="panhuafeng " ;
Lista de nombres[20].py="sijun";
Lista de nombres[21].py="songzhanhui";
Lista de nombres[22]. py ="sunzhengqing";
Lista de nombres[23].py="wanghaofeng";
Lista de nombres[24]
.py="wangjunshuai";
Lista de nombres[25].py="wangqinde";
Lista de nombres[26].py="wangzejun";
Lista de nombres[27].py="wangkeke";
Lista de nombres[28].py="weixing";
Lista de nombres[29].py="wurenke";
for(i=0;ilt;q;i)
{
s0=0;
f=NameList[i].py ;
for(r=0;*(f r)!='\0';r )
s0 =*(f r);
Lista de nombres[ i].k=s0;
}
}
void creathash()
{
int i;
for(i=0;ilt;n;i)
{
lista hash[i].py="";
lista hash[i].k=0;
lista hash[i].si=0;
}
for(i=0; ilt ;M;i)
{
int sum=0
int adr=(NameList[i].k)M;
int d=adr;
if(hashlist[adr].si==0)
{
hashlist[adr].k=NameList[ i].k;
hashlist[adr].py=NameList[i].py
hashlist[adr].si=1;
else
{
while(hashlist[d].k!=0)
{
d=(d ListaNombres[i].k10 1)M
suma=sum 1
}
listahash[d].k=ListaNombres[ i].k;
hashlist[d].py=NameList[i].py
hashlist[d].si=sum 1; }
}
}
void findlist()
{
nombre de cadena;
int s0=0, r, sum=1;
coutlt; "Ingrese el pinyin de su nombre: "lt;
cingt; gt; nam;
for(r=0; rlt; 20; r )
s0 =nam[r];
int adr=s0M;
int d=adr;
if(hashlist[adr].k==s0)
coutlt;lt;"Nombre:"lt;lt;hashli
st[adr].pylt;lt;" "lt;lt;"Palabra clave: "lt;lt;s0lt;lt;" "lt;lt;"La longitud de la búsqueda es: 1"lt;lt;endl;
else if(hashlist[adr].k==0)
coutlt;lt;"¡No existe tal registro!"lt;lt;endl;
else p> p>
{
int g=0
mientras(g==0)
{
d =( d s010 1)M;
suma=suma 1;
if(hashlist[d].k==0)
{coutlt;lt ;" ¡No existe tal registro! "lt;lt;endl;
g=1;
}
if(hashlist[d].k==s0 )
{
coutlt;lt;"Nombre:"lt;lt;hashlist[adr].pylt;lt;" "lt;lt;"Palabras clave: "lt;lt ; s0lt;lt;" "lt;lt;"La longitud de la búsqueda es: 1"lt;lt;endl;
g=1;
}
}
}
}
void display()
{
int i;
for(i=0;ilt;30;i)
coutlt;lt;NameList[i].pylt;lt;" "lt;lt;NameList[i].klt;lt ;endl ;
}
int main()
{
char x;
nombre de lista() ;
creathash();
coutlt;lt;"d. Muestra la tabla hash f. Para buscar cualquier clave, seleccione "lt;lt;endl;
while(cingt; gt; x)
{
if(x=='d'){display();coutlt;lt;endl;}
else if(x=='f'){findlist();coutlt;lt;endl;}
else break;
}
devolver 0 ;
}