//este programa fue realizado por Carlos Sinuhe Gonzalez //materia: Estructura de Datos, grupo : 2802 //Profesor: Alejandro Rubio // realiza una busqueda de elementos por el metodo de Hashing #include #include #define N 100 main() { int a[N]; int c,n,ban,dx,d,x,x1,i; char s; clrscr(); gotoxy(23,2); printf("Busqueda por Randomizacion o Hashing"); gotoxy(5,5);printf("Tamaņo del arreglo: "); gotoxy(25,5);scanf("%d", &n); for (i=1; i<=n; i++) a[i]=-9999; gotoxy(5,7);printf("Valores del arreglo: "); c=2; for (i=1; i<=n; i++){ ban=1; gotoxy(c+20,8);scanf("%d", &x); x1=x; while (ban==1){ d=(i); if (a[d]==-9999){ a[d]=x1;/*almacena el elemento en el arreglo en la posicion obtenida*/ ban=0;/*cabia la variable para leer otro numero*/ } else/*en caso de que la posicion del arreglo ya este ocupada*/ x=d;/*toma el valor obtenido para realizar la operacion de obtencion nuevamente*/ } c+=5;/*incrementa la posicion de la columna en pantalla*/ } /*Busqueda por hashing*/ gotoxy(5,12);printf("Valor a buscar: "); scanf("%d", &x);/*obtiene el elemento a buscar en el arreglo*/ d=(x%n)/*+1*/;/*obtiene la posicion del elemento*/ if (a[d]==x)/*si el elemento se encuentra en esa posicion lo imprime*/ { gotoxy(5,14);printf("El elemento se encuentra en la posicion: %d", d); s=getchar(); } else{ /*si el elemento no se encuentra en la posicion obtenida, empieza a buscarlo*/ dx=d+1;/*obteniendo una nueva posicion*/ while ((dx<=n) && (a[dx]!=x) && (a[dx]!=0) &&(dx!=d)){ dx++; if (dx==(n+1)) dx=1; x1=1; } } if (a[dx]==x){/*imprime el elemeto encontrado por el proceso anterior*/ gotoxy(5,14);printf("El elemento se encuentra en la posicion: %d", dx); s=getchar(); } else /*if(a[dx]!=x)*/ { gotoxy(5,14);printf("El elemento no ha sido encontrado"); s=getche(); } return(0); s=getche(); getch (); scanf("%c",&s); }