Ae galera, estou fazendo um trabalho de faculdade e ando meio enferrujado na linguagem. O problema se resume a ler um vetor com alguns valores e armazená-los numa tabela usando Hash, com tratamento de colisão por Quociente linear, mas creio q minha dúvida seja mais sobre C em si. Aí vai o que fiz até agora, mas não consigo compilar por conta de um problema no 1o if, onde verifico se a posição na tabela está vazia (ou pelo menos tento).
#include <stdio.h>
#include <stdlib.h>
#define N 11
int hash(int valor)
{
return valor % N;
}
int doubleHash(int incremento)
{
return incremento / N;
}
int main (void)
{
int tabela[N], incremento[N], valor[N], posicao=0;
int contador = 0; int i= 0;
valor[0] = 27;
valor[1] = 18;
valor[2] = 29;
valor[3] = 28;
valor[4] = 39;
valor[5] = 13;
valor[6] = 16;
while (contador<N)
{
posicao = hash(valor[i]);
if (tabela[posicao] == NULL)
{
tabela[posicao] = valor[contador];
contador++;
}
else
{
incremento[posicao] = doubleHash(posicao);
while (tabela[posicao] =! NULL)
{
posicao = ((posicao + incremento[posicao]) % N);
}
tabela[posicao] = valor[contador];
contador++;
}
i++;
}
}
O programa ainda tá em fase inicial e ainda to tentando fzer o básico funcionar pra continuar progredindo, mas realmente não entendi o porque do erro. Se alguém puder dar uma luz, agradeço muito! Vlw gente!
Pergunta
R. Bighi
Ae galera, estou fazendo um trabalho de faculdade e ando meio enferrujado na linguagem. O problema se resume a ler um vetor com alguns valores e armazená-los numa tabela usando Hash, com tratamento de colisão por Quociente linear, mas creio q minha dúvida seja mais sobre C em si. Aí vai o que fiz até agora, mas não consigo compilar por conta de um problema no 1o if, onde verifico se a posição na tabela está vazia (ou pelo menos tento).
O programa ainda tá em fase inicial e ainda to tentando fzer o básico funcionar pra continuar progredindo, mas realmente não entendi o porque do erro. Se alguém puder dar uma luz, agradeço muito! Vlw gente!
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.