Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

lesiano

HashTables

Recommended Posts

lesiano

Boas;

Admitindo que tenho duas HashTables (uma mapeada por uma string e outra por um inteiro) como posso fazer uma função que insira e que funcione para as duas HashTables?

Estava a pensar em:

CLIENTE procura(HashNome x, HashNumero y, Cliente c){

if(x==NULL) procura2(y,c);

if(y==NULL) procura3(x,c);

}

mas isto é uma má solução. Eu queria passar só o apontador da HashTable, mas vai-me dar incompatibilidade de tipos porque não são do mesmo tipo. Alguém me diz a resposta?

Danke

Share this post


Link to post
Share on other sites
Rui Carlos

Podes ter implementações de HashTables genéricas, que possam ser utilizadas com diferentes tipos de dados.

Também podes eliminar os erros de tipos com castings.

CLIENTE procura(void *x, Cliente c){
  if(x==NULL) procura2((HashNome)y,c);
  // ou if(y==NULL) procura3((HashNumero)x,c);
}

Isto assumindo que o tipo HashName é um apontador (se não é, se calhar devia, pois permite-te fazer este tipo de coisas mais genéricas). É claro que ainda terias que arranjar maneira de saber qual a função a chamar.

Mas relativamente a esse ponto, parece-me que devias ter duas funções diferentes. Uma que recebia uma hash table e um nome, e outra que recebia uma hashtable e um cliente.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.