Olá!
Meu grupo está com algumas dúvidas em relação à implementação da symbol table:
1) A função stable_insert não deveria receber um valor? Já que o equivalente nas STs do Java seria a função put(Key key, Value value), que associa a Key key ao Value value, porém no arquivo stable.h temos apenas:
InsertionResult stable_insert(SymbolTable table, const char *key);
2) Sobre os tipos esperados para Key e Value, no enunciado temos:
"A chaves da ST são alguns tipos de dados e o valores strings."
Porém nas funções declaradas em stable.h, a chave é sempre uma string (const char *key) e o valor (EntryData?) que pode assumir outros tipos de dado.
3) Sobre a EntryData: não deveria ser uma struct, em vez de uma union? Nesse caso o inteiro i seria a chave (depois de passar pela função de hash), a string str seria o valor associado a essa chave, e o ponteiro p apontaria para a próxima EntryData da tabela, associada a mesma chave (no caso de colisão).
typedef union {
int i;
char *str;
void *p;
} EntryData;
4) Apenas para confirmar se entendemos o que a função stable_visit faz:
> A função percorre cada entry de uma symbol table e retorna 0 quando chega ao final dela
> Se não retorna 0, existe alguma convenção de que número retornar? (como o número de elementos visitados, por exemplo)?
5) Existe alguma especificação sobre a função de hash que deve ser usada? (modular ou multiplicativo)
Acho que por enquanto é isso, obrigada!