Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int localizar_RAC(int dni){ ///Inicio Localizar Rebalse Abierto Cuadrático (DOC 0 INDICA CELDA LIBRE, DOC -1 INDICA CELDA VIRGEN)
- libre=-1;
- cost_aux=0;
- int i=hashing(dni,MPC);
- int j=1;
- if(cant_RAC==0){
- if(flag_evocar==1){
- RAC_loc_cant_f++;
- }
- pos_RAC=i;
- return -1;
- }
- while(j<=MPC && RAC[i].doc!=dni && RAC[i].doc!=-1){
- if (RAC[i].doc==0){
- if(libre==-1){
- libre=i;
- }
- }
- if(flag_evocar==1){
- cost_aux++;
- }
- i=(i+j)%MPC;
- j++;
- }
- if(RAC[i].doc==dni){
- if(flag_evocar==1){
- cost_aux++; ///Consulto la celda para saber si es igual, como es igual no entra en el while y por lo tanto no incremento el costo
- if(cost_aux>RAC_loc_MAX_e){
- RAC_loc_MAX_e=cost_aux;
- }
- RAC_loc_total_e+=cost_aux;
- RAC_loc_cant_e++;
- }
- pos_RAC=i;
- return 1;
- }
- else{
- if(RAC[i].doc==-1){
- if(libre!=-1){
- pos_RAC=libre;
- if(flag_evocar==1){
- cost_aux++; ///Consulta la celda en el while y, como es celda virgen, no entra. Por lo tanto se incrementa aquí.
- RAC_loc_total_f+=cost_aux;
- if(cost_aux>RAC_loc_MAX_f){
- RAC_loc_MAX_f=cost_aux;
- }
- RAC_loc_cant_f++;
- }
- }
- else{
- if(flag_evocar==1){
- cost_aux++; ///Consulta la celda en el while y, como es celda virgen, no entra. Por lo tanto se incrementa aquí.
- RAC_loc_total_f+=cost_aux;
- if(cost_aux>RAC_loc_MAX_f){
- RAC_loc_MAX_f=cost_aux;
- }
- RAC_loc_cant_f++;
- }
- pos_RAC=i;
- }
- return 0;
- }
- if(j>MPC){
- if(flag_evocar==1){
- RAC_loc_total_f+=cost_aux;
- if(cost_aux>RAC_loc_MAX_f){
- RAC_loc_MAX_f=cost_aux;
- }
- RAC_loc_cant_f++;
- }
- if(libre!=-1){
- pos_RAC=libre;
- }
- else{
- pos_RAC=i;
- }
- return 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement