Colección de citas famosas - Slogan de motivación - c diccionarios y tablas hash

c diccionarios y tablas hash

Ésta es nuestra tarea. Simplemente cámbielo según sus necesidades.

# incluir ltstdio.h gt

# incluir ltmalloc.h gt

# incluir ltstring.h gt

//#include

#define HASH_LEN 50 //La longitud de la tabla hash

#Define M 47

#Define name_number 30 //Número de nombres

nombre de estructura typedef

{

char * py//El pinyin del nombre

int k //El número entero correspondiente al pinyin

}Nombre;

NOMBRE NOMBRE lista[HASH_LEN];

Estructura Typedef hterm //Tabla hash

{

char * py//El pinyin del nombre

int k; //El entero correspondiente al pinyin

int si//La longitud de la búsqueda

}Hash;

HASH HashList[HASH _ LEN];

/* - inicialización del nombre (matriz de estructura).

void InitNameList()

{

NameList[0]. py = " chenghongxiu

Lista de nombres[1].py= "Yuanhao";

Lista[2].py= "Yang Yang";

Lista [3]. py = " zhanghen

Lista[4]. py = " chenghongxiu

Lista[5].py= "Xiao Kai";

Lista[6].py= "Liu Peng";

Lista [7]. py= "Shen Yonghai";

Lista[8]. py="Chengdaoquan";

Lista[9]. py= "Gong Yunxiang";

Lista[11]. py= "Sun Zhenxing";

Lista[12]. py= "Sun Rongfei";

Lista[13]. py= "Sun Minglong";

Lista[14]. py= "Zhang Hao";

Lista[15]. py= "Tian Miao";

Lista[16]. py= "Yao Jianzhong";

Lista[17]. py = " yaojianqing

Lista[18].py= "Yao Jianhua";

Lista[19].py= "Yao Haifeng";

Lista [ 20]. py = " chengyanhao

Lista de nombres[21]. py= "Gloria Viento de Otoño";

Lista[22]. py= "Qian Pengcheng";

Lista[23]. py= "Yao Haifeng";

Lista[24]. py = " bianyan

Lista[25].py= "Lei Ling";

Lista[26].py= "Fuzhonghui";

Lista[ 27].py = " huanhaiyan

Lista[28]. py = " liudianqin

Lista[29].py = "Wang Binnian";

char * f;

int r, s0;

for(int I = 0; I ltNAME _ NOI)//Encuentra el número entero correspondiente al pinyin de cada nombre.

{

s0 = 0;

f = lista de nombres[i]. py;

for(r = 0; *(f r)!= '\0'; R ) //Método: Suma los códigos ASCII correspondientes a cada carácter de la cadena y se utiliza el entero resultante como hash La clave de la tabla hash.

s0 = *(f r) s0;

Lista[i]. k = s0

}

}

/* -Construir una tabla hash*/

void CreateHashList()

{

for(int I = 0; I lt hash_length; I)//Inicialización de la tabla hash

{

HashList [i]. py =

HashList[i]. k = 0;

HashList[i]. si = 0;

}

for(I = 0; iltNAME_NO)

{

int suma = 0; >

int adr=(NameList[i].k) M; //Función hash

int d = adr

If(HashList[adr]. si==0 ) //Si no hay conflicto,

{

HashList[adr]. k = lista de nombres[i]. k;

HashList[adr]. py=Lista de nombres[i]. py;

HashList[adr]. si = 1;

}

De lo contrario //Conflicto

{

Hacer

{

d=(d ((name list[i]).k)) 10 1) M; //Pseudo hash

suma = suma 1 //Suma 1 al número de búsquedas.

}mientras (HashList[d].k!=0);

HashList[d]. k = lista de nombres[i]. k;

HashList[d]. py=Lista de nombres[i]. py;

HashList[d]. si = suma 1;

} i

}

}

/* - Buscar.

void FindList()

{

printf("\n \nIngrese el pinyin de su nombre: " //Ingrese un nombre p>

char nombre[20]= { 0 };

scanf("s ", nombre);

int s0 = 0;

for(int r = 0; r lt20; R) // Encuentra el número entero (palabra clave) correspondiente al pinyin del nombre.

s0 = nombre[r];

int suma = 1;

int ADR = s0 M; //Usar función hash

>int d = adr

If(HashList[adr].k==s0) //Juzga en tres situaciones.

printf(" \nNombre: s Palabra clave: d Longitud de búsqueda: 1 ", HashList[d].

py, s0);

else if (HashList[adr].k==0)

Printf("¡No existe tal registro!");

Otros

{

int g = 0;

Hacer

{

d =(d s0 10 1 ) M; //Pseudo hash

suma = suma 1;

if (HashList[d].k==0)

{

Printf("¡Sin registro!");

g = 1;

}

if (HashList[d].k== s0)

{

printf("\nNombre: s Palabra clave: d Longitud de búsqueda: d ", HashList[d].py, s0, sum);

g = 1;

}

} mientras(g = = 0);

}

}

/* - Muestra la tabla hash.

Pantalla vacía()

{

printf(" \ n \ n dirección \ t palabra clave \ t \ tLongitud de búsqueda \ th(clave)\ t \ t pinyin \ n "); //Formato de visualización

for(int I = 0; i lt15; i)

{

printf(" d ",I);

printf("\td ",HashList[i].k);

printf("\t\td ",HashList[i].si ) ;

printf("\t\td ", (HashList[i]).k) M);

printf("\t s ", HashList[i].py ) ;

printf(" \ n ");

}

// printf("Presione cualquier tecla para continuar con la visualización...\ n "); //Debido a que hay muchos datos, se muestran en pantalla dividida (para que todos los datos se puedan ver en Win9x/DOS).

//getch();

for(I = 15;ilt30;i)

{

printf("d " ,I);

printf("\td ",HashList[i].k);

printf("\t\td ",HashList[i].si) ;

printf("\t\td ",(HashList[i]).k) M);

printf("\t s ",HashList[i].py) ;

printf(" \ n ");

}

// printf("Presione cualquier tecla para continuar con la visualización...\ n "); /p>

//getch();

for(I = 30;ilt40;i)

{

printf("d ", I);

printf("\td ",HashList[i].k);

printf("\t\td ",HashList[i].si); /p>

printf("\t\td ", (HashList[i]).k) M

printf("\t s ", HashList[i].

py);

printf(" \ n ");

}

//printf("Presione cualquier tecla para continuar con la visualización...\ n " ) ;

//getch();

for(I = 40; i lt50; i )

{

printf( " d ",I);

printf("\td ",HashList[i].k);

printf("\t\td ",HashList[i]. si );

printf("\t\td ", (HashList[i]).k) M);

printf("\t s ", HashList[i]. py );

printf(" \ n ");

}

Promedio flotante = 0

for(I = 0; ;ilthash_length;i )

promedio =HashList[i]. si;

promedio/= NOMBRE_NO;

printf("\n\nLongitud promedio de búsqueda: ASL (d) = f\n\n", nombre_no, promedio);

}

/* - Función principal.

void main()

{

/*::setconsolettitle("Operación de tabla hash"); //Función API de Windows para configurar el título de la ventana de la consola. .

HANDLE hCon =::GetStdHandle(STD_OUTPUT_HANDLE); //Obtiene el identificador del dispositivo de salida estándar

* SetConsoleTextAttribute(hCon, 10 | 0);

*/

Printf ("\ n -Creación y búsqueda de tablas hash");

init name list();

crear lista hash();

mientras(1)

{

printf(" \ n \ n ");

Printf( " 1. Mostrar tabla hash\ n ");

Printf(" 2. Buscar\ n "

Printf(" 3. Salir\ n ");

Error:

char ch 1;

scanf("c ", ampch 1);

if (ch1== '1 ')

Display();

si no (ch1=='2 ')

FindList();

si no (ch1 =='3 ')

Regresar;

Otros

{

printf("\n¡Ingrese la opción correcta! ");

ir a err

}

}

}