Tabla Hash

Share Embed Donate


Short Description

COMO HACER UNA TABLA HASH...

Description

Tabla hash Una tabla hash, hash, mapa hash, hash, tabla de dispersión o dispersión o tabla fragmentada es fragmentada es una estructura de datos que datos  que asocia llaves o claves con valores. La operación principal que soporta de manera eficiente es la búsqueda: permite el acceso a los elementos (teléfono y dirección, por ejemplo) almacenados a partir de una clave generada (usando el nombre o nmero de cuenta, por ejemplo). !unciona transformando la clave con una función hash en hash en un hash, un nmero que identifica la posición (casilla o cubeta) donde la tabla "as" locali#a el valor deseado. Un ejemplo pr$ctico para ilustrar que es una tabla "as" es el siguiente: %e necesita organi#ar los periódicos que llegan diariamente de tal forma que se puedan ubicar de forma r$pida, entonces se "ace de la siguiente forma & se "ace una gran caja para guardar todos los periódicos (una tabla), y se divide en ' contenedores (a"ora es una "as" table o tabla fragmentada), y la clave para guardar los periódicos es el d*a de publicación (*ndice). +uando se requiere buscar un periódico se busca por el d*a que fue publicado y as* se sabe en que #ócalo (bucet) est$. -arios -arios periódicos quedar$n guardados en el mismo #ócalo (es decir colisionan al ser almacenados), lo que implica buscar en la sub&lista que se guarda en cada #ócalo. e esta forma se reduce el tama/o de las bsquedas de 0(n) a, en el mejor de los casos, 0() y, en el peor, a 0(log(n)).

1jemplo de tabla "as".

Las tablas hash se hash se suelen implementar sobre vectores de una dimensión, aunque se pueden "acer implementaciones multi&dimensionales basadas en varias claves. +omo en el caso de los arrays, las tablas "as" proveen tiempo constante de bsqueda promedio 0() 0(),, sin importar el nmero de elementos en la tabla. %in embargo, en casos particularmente malos el tiempo de bsqueda puede llegar a 0( n), es decir, en función del nmero de elementos. +omparada con otras estructuras de arrays asociadas, las tablas "as" son m$s tiles cuando se almacenan grandes cantidades de información. Las tablas "as" almacenan la información en posiciones pseudo&aleatorias, as* que el acceso ordenado a su contenido es bastante lento. 0tras estructuras como $rboles binarios auto& balanceables tienen balanceables  tienen un tiempo promedio de bsqueda mayor (tiempo de bsqueda 0(log n)), pero la información est$ ordenada en todo momento.

#include 1. #include 2. 3. #define MAXC 10//MAXIMO TAMAÑO ! "A CA!A $. #define MAXA 10//TAMAÑO ! %A TA&%A '. (. st)uct st)uct nodo  nodo *. + ,.

ch-) c-den- c-den-

.

st)uct nodo st)uct  nodo siuiente siuiente 

10.



11. 12.

int cl-e int  cl-e 4ch-) ch-) c-den-u5  c-den-u56 6MAXC78 MAXC78//OBTIENE LA SUMA DE LOS

VALORES ASCII DE CADA CARACTER DE LA CADENA 

13.

+

1$.

int cl-e int  cl-e9 90: -scii:  -scii: i9  i90

1'. 1(.

;hile44 ;hile 44-scii -scii9 9c-den-u56 c-den-u5 6i 78 78=9 =9 8 8

1*.

cl-e9 9-scii -scii 

1,. 1. 20.

)etu)n cl-e )etu)n  cl-e  

21.

int h-sh int  h-sh 4int int cl-e  cl-e8 8//SE DETERMINA LA POSICIO EN LA QUE SE

GUARDARA LA CADENA 

22.

+

23.

int ?osicion int  ?osicion9 9cl-e@ cl-e@MAXA MAXA

2$. 2'.

)etu)n ?osicion )etu)n  ?osicion 

2(.



2*. 2,. oid inse)t-) oid  inse)t-)4 4st)uct st)uct nodo  nodo  ?t-bl?t-bl-: : ch-) c-den-6 c-den-6MAXC78 MAXC78//INSERTAR NUEVO ELEMENTO EN UNA LISTA  2.

+

30.

st)uct nodo st)uct  nodo nueo 9 4st)uct st)uct nodo  nodo 8 -lloc -lloc4 4siBeof siBeof4 4st)uct nodo88 nodo88 //CREAMOS EL NUEVO NODO 

31.

nueo> >c-denc-den- 9 c-den-  c-den-//GUARDAMOS CADENA 

32.

nueo> >siuiente siuiente 9 "%%  "%%//COMO SE VA A INSERTAR AL FINAL, SERA EL QUE APUNTE A NULL

33.

st)uct nodo st)uct  nodo -ctu-l9 -ctu-l9?t-bl?t-bl- //CREAMOS UN PUNTERO AUXILIAR A NODO 

3$. 3'.

if 4?t-bl-99 ?t-bl-99"%% "%%8 8

3(.

+

3*.

?t-bl-9 ?t-bl-9nueo nueo//SI LISTA VACIA, ENTONCES: NUEVO ES EL PRIMER ELEMENTO 

3,.



3.

else

$0.

+

$1.

;hile 4-ctu-l> -ctu-l >siuiente siuiente =9 =9 "%%  "%%8 8

$2.

+

$3.

?)intf4 ?)intf 4Dn @s nD: nD: -ctu-l>  -ctu-l >c-denc-den-8 8

$$.

-ctu-l 9 -ctu-l>  -ctu-l>siuiente siuiente //SI NO ESTA VACIA, SE  RECORRE LA LISTA

$'.



$(.

-ctu-l > >siuiente siuiente 9nueo nueo//EL ULTIMO NODO AHORA ANTECEDE AL NUEVO 

$*.



$,.



$. '0.

oid ost)-) oid  ost)-)4 4st)uct st)uct nodo  nodo ?t-bl-8 ?t-bl-8//IMPRIMIR LA TABLA 

'1.

+

'2.

st)uct nodo st)uct  nodo -ctu-l9 -ctu-l9?t-bl- ?t-bl- //ACTUAL ES UN PUNTERO AUXILIAR PARA RECORRER LA LISTA 

'3. '$.

;hile 4-ctu-l=9 -ctu-l =9"%% "%%8 8//MIENTRAS NO SEA EL FINAL DE LA LISTA 

''.

+

'(.

?)intf4 ?)intf 4D6 @s 7>D: 7>D : -ctu-l>  -ctu-l>c-denc-den-8 8//IMPRIME EL DATO DEL NODO CORRESPONDIENTE 

'*.

-ctu-l 9 -ctu-l>  -ctu-l>siuiente siuiente //AVANZAMOS AL SIGUIENTE NODO 

',.



'.

?)intf4 ?)intf 4D"%%nnD D"%%nnD8 8

(0.



(1. (2.

-in48

(3.

+

($.

st)uct nodo st)uct  nodo ?t-bl-6 ?t-bl-6MAXA7 MAXA7//ARREGLO DE PUNTEROS PARA NODOS 

('.

ch-) c-den-u5 ch-)  c-den-u56 6MAXC7 MAXC7//ARREGLO AUXILIAR PARA GUARDAR CADENA INTRODUCIDA 

((.

int o? int  o?: : cl-ec-den-:  cl-ec-den- : ?os  ?os//VARIABLES USADAS PARA MENU Y POSICION EN EL ARREGLO 

(*. (,.

fo)4 fo) 4?os9 ?os90?os< ?os #include > #include > #include > std  using namespace std struct  )eist)o+  )eist)o+ int

n) n)

 cl-e6,7 char cl-e6  d-t-6,7 char d-t-6  s) int s) ): -:  -: s  s  enc-beB-do+ struct enc-beB-do+  n)s int n)s ed: ed: ec  ec

/// enc-beB-do de dis?e)sion J colisiones

KI%! fdd: fdd: fdc fdc  l): le  le int l):  fh4 char cl-e 8 int fh4 + int n) 9 0

 i90 i<  i
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF