private Celda buscarCelda(Integer aBuscar){

		//Se obtiene el balde  y se busca si el elemento se encuentra dentro de él.		
		int baldeABuscar = tecnica.h(aBuscar);
		int posicionABuscar = posicionElementoEnBalde(baldeABuscar,aBuscar);
		//Referencia al elemento que se va a devolver.
		Celda celdaSalida = null;

		if ( posicionABuscar != -1 ){

			//Si dentro del balde se encontró al elemento y se conoce su posicón, se devuelve el elemento.
			celdaSalida = espacioDeAlmacenamiento[baldeABuscar][posicionABuscar];
		}else{

			//Si NO se encuentra el elemento en el balde, se debe buscar en otro balde.
			if ( !baldeConRanurasVirgenes(baldeABuscar) ){

				//Voy iterando los intentos para reasignar hasta poder encontrar el elemento o determinar que no se encuentra.
				boolean encontrado = false;
				boolean fin = false;
				Vector<Integer> recorridos = new Vector<Integer>();
				recorridos.add(baldeABuscar);

				for ( int i = 1; !encontrado && !fin ; i++){

					//Se obtiene el balde.
					int baldeABuscarReasignado = tecnica.reasignar(i,aBuscar);

					if ( baldeABuscarReasignado >= 0 ){

						//Evitamos los ciclos
						if ( ! recorridos.contains(baldeABuscarReasignado) ){

							//Se busca el elemento dentro del balde actual.
							int posicionABuscarReasignado = posicionElementoEnBalde(baldeABuscarReasignado,aBuscar);

							//Lo agregamos al vector de visitados.
							recorridos.add(baldeABuscarReasignado);

							if ( posicionABuscarReasignado != -1 ){

								//Si se encontró el elemento en el balde se lo devuelve.
								celdaSalida = espacioDeAlmacenamiento[baldeABuscarReasignado][posicionABuscarReasignado];
								encontrado = true;
							}else{
								if ( this.baldeConRanurasVirgenes(baldeABuscarReasignado) ){

									//Si se encuentra una ranura virgén se finaliza la búsqueda.
									fin = true;
								}
							}
						}else{
							fin = true;
						}

					}else{
						//Es la tecnica pseudoazar y no tiene más información para seguir buscando.
						fin = true;
						encontrado = true;
					}
				}
			}
		}
		//Se devuelve el elemento encontrado o null en caso de que no exista.
		return celdaSalida;

	}