Создание словаря с использованием дерева в C ++.Выдает ошибку сегментации на некоторых входах.
Отладка помогла мне обнаружить, что проблема была в функции проверки.В частности, после выхода из цикла при проверке состояния isword.
typedef struct node
{
bool is_word;
struct node *children[27];
} node;
node *createNode()
{
// Void -> Node*
// Create a pointer to a node(structure)
// Allocate memory and store address in child pointer
node *child = (node *)malloc(sizeof(node));
// Initialize each node in child to NULL
for (int i = 0; i < N; i++)
{
child->children[i] = NULL;
}
// Initialize the is_word variable
child->is_word = false;
// Return the pointer
return child;
}
bool check(const char *word)
{
int i = 0;
// Create a pointer to the root of the trie
node *ptr = root;
// Iterate over each letter
while (word[i] != '\0')
{
char c = tolower(word[i]);
// Get the key for each letter
int key = hash(c);
// If the node at the key is null then word is misspelled
if (!ptr)
{
return false;
}
else
{
ptr = ptr->children[key];
i++;
}
}
// Check if isword at the last letter is true
if (ptr->is_word)
{
return true;
}
else
{
return false;
}
}
Я ожидаю, что выход будет НАЙДЕН или НЕ НАЙДЕН, но фактический выход - ошибка ошибки сегментации.