Red de conocimiento informático - Descarga de software - Diseñar una tabla hash usando programación C

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";

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>

{

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 ;

}