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!