Я пытаюсь реализовать хеш-таблицу с указателями на двойной связанный список, который хранит информацию на языке Си.Проблема в том, что я продолжаю получать предупреждения от компилятора, что я не понимаю, почему.Все предупреждения - это «предупреждение: назначение из несовместимого типа указателя»
Вот мои структуры:
typedef struct stru_contacto_list{
char *nome;
char *email;
char *telefone;
struct stru_contacto_list *prev, *next;
}contacto_list;
typedef struct stru_contacto{
contacto_list *info;
struct stru_contact *next_hash;
}contacto_hash;
typedef struct{
contacto_hash **val;
}hash_tableC;
Вот код, который поможет вам лучше понять, что происходит:
Инициализация хеш-таблицы
void initContactos(hash_tableC *c){
int i;
c->val =
(contacto_hash**)malloc(sizeof(contacto_hash)*DEFAULTSIZE);
for(i = 0; i < DEFAULTSIZE; i++){
c->val[i] = NULL;
}
}
Вот некоторый код, откуда я получаю предупреждения, здесь я пытаюсь добавить 'contact_hash' в хеш-таблицу, поместив его в заголовок связанного списка, связанногок индексу в hash_table.
void addContact(){
int index, flag;
contacto_hash *novo =
(contacto_hash*)malloc(sizeof(contacto_hash));
contacto_list *novoL =
(contacto_list*)malloc(sizeof(contacto_list));
flag = addContactToList(novoL);
if (flag){
free(novo);
return;
}
novo->info = novoL;
novo->next_hash = NULL;
index = hashing(novoL->nome);
if (contactos->val[index] != NULL)
novo->next_hash = contactos->val[index]; /* THE WARNING*/
contactos->val[index] = novo;
}
Некоторый другой небольшой фрагмент кода, где я получаю то же «предупреждение: назначение из несовместимого типа указателя»:
contacto_hash* find(char *nome, int indice){
/*Returns the previous contact_hash i want to find*/
contacto_hash *atual, *prev;
if (contactos->val[indice] == NULL)
return NULL;
atual = contactos->val[indice];
prev = atual;
while (atual != NULL) {
if (strcmp(atual->info->nome, nome) == 0){
return prev;
}
prev = atual;
atual = atual->next_hash; /* THE WARNING */
}
return NULL;
}
Предупреждение от компилятора: «предупреждение: назначение изнесовместимый тип указателя "