Форум программистов, компьютерный форум CyberForum.ru

Как исправить ошибку? - C++

Восстановить пароль Регистрация
 
kukujamba
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 10
21.06.2014, 18:29     Как исправить ошибку? #1
Программирую в КБ. Выходит одна ошибка, понятия не имею как исправить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define HASHTAB_SIZE 71
#define HASHTAB_MUL 31
struct listnode {
char *key;
int value;
struct listnode *next;
};
struct listnode *hashtab[HASHTAB_SIZE];
unsigned int hashtab_hash(char *key)
{
unsigned int h = 0;
char *p;
for (p = key; *p != '\0'; p++) {
h = h * HASHTAB_MUL + (unsigned int)*p;
}
return h % HASHTAB_SIZE;
}
void hashtab_init(struct listnode **hashtab)
{
int i;
for (i = 0; i < HASHTAB_SIZE; i++) {
hashtab[i] = NULL;
}
}
void hashtab_add(struct listnode **hashtab,
char *key, int value)
{
struct listnode *node;
int index = hashtab_hash(key);
// Вставка в начало списка
node = malloc(sizeof(*node));
if (node != NULL) {
node->key = key;
node->value = value;
node->next = hashtab[index];
hashtab[index] = node;
}
}
struct listnode *hashtab_lookup(
struct listnode **hashtab,
char *key)
{
int index;
struct listnode *node;
index = hashtab_hash(key);
for (node = hashtab[index];
node != NULL; node = node->next)
{
if (strcmp(node->key, key) == 0)
return node;
}
return NULL;
}
int index()
{
struct listnode *node;
hashtab_init(hashtab);
hashtab_add(hashtab, "Tigr", 190);
hashtab_add(hashtab, "Slon", 2300);
hashtab_add(hashtab, "Volk", 60);
node = hashtab_lookup(hashtab, "Slon");
printf("Node: %s, %d\n",
node->key, node->value);
return 0;
}
void hashtab_delete(struct listnode **hashtab, char *key)
{
int index;
struct listnode *p, *prev = NULL;
index = hashtab_hash(key);
for (p = hashtab[index]; p != NULL; p = p->next) {
if (strcmp(p->key, key) == 0) {
if (prev == NULL;
hashtab[index] = p->next;
else
prev->next = p->next;
free(p);
return;
}
prev = p;
}
}
int main()
{
struct listnode *node;
/* ... */
hashtab_delete(hashtab, "Slon");
node = hashtab_lookup(hashtab, "Slon");
if (node != NULL) {
printf("Node: %s, %d\n",
node->key, node->value);
} else {
printf("Key 'Slon' not found\n");
}
return 0;
}
C:\Users\Алексей\Desktop\proba\тест3\main.cpp|34|error: invalid conversion from 'void*' to 'listnode*' [-fpermissive]|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2014, 18:29     Как исправить ошибку?
Посмотрите здесь:

как исправить ошибку C++
Как исправить ошибку? C++
Как исправить ошибку C++
C++ Как исправить ошибку?
C++ Как исправить ошибку?
C++ Как исправить ошибку?
Как исправить ошибку? C++
Как исправить ошибку? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jewbacabra
1789 / 1504 / 538
Регистрация: 24.04.2014
Сообщений: 4,215
21.06.2014, 18:35     Как исправить ошибку? #2
C++
1
node = (listnode*)malloc(sizeof(listnode));
Yandex
Объявления
21.06.2014, 18:35     Как исправить ошибку?
Ответ Создать тему
Опции темы

Текущее время: 23:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru