트라이 트리로로드되는 사전 파일 (소문자 및 아포스트로피 단어 만 포함)이 있습니다.
나는 편지 케이스에 관계없이 trie 트리에 파일의 단어가 있는지 검사하는 검사 기능이 있습니다.데이터 구조에서 아포스트로피 확인
아포스트로피의 단어는 항상 맞춤법이 틀린 것으로 만 제외하고 모두 잘 작동합니다.
typedef struct NODE
{
bool isWord;
struct NODE* child[ALPHA_SIZE];
} NODE;
정의
#define ASCII_DIFFERENCE 'a'
어떤 도움에 감사드립니다 :
여기
bool check(const char *word)
{
// creat arrow to follow letters
NODE* arrow = root;
// for every letter in word
for (int i = 0, length = strlen(word); i < length; i++)
{
int index;
if(word[i] == '\'')
{
index = 26;
} else {
index = tolower(word[i]) - ASCII_DIFFERENCE;
}
// if NULL? creat a new one and move arrow to new child
if (arrow->child[index] == NULL)
{
return false;
} else if (arrow->child[index] != NULL) // not null?
{
arrow = arrow->child[index];
}
}
return arrow->isWord;
}
내 구조체 내 기능입니다.
입력 및 원하는 출력의 예를 제공 할 수 있습니까? 및 전류 출력. –
세계에 "i 'd"라는 단어가 사전에 있지만 체크 기능은 여전히 false를 반환하고 철자가 틀린 단어로 계산합니다. @TonyTannous –
그러나 '\'에 대한 특별한 것은 없으며 그 이유를 이해할 수 없습니다. 문제. 단어가 사전에 올바르게 삽입 되었습니까? (즉, 인덱스 26에 올바르게 넣습니까?)이'if/else'에 print 문을 넣고 트리 탐색에서 경로를 따라갈 수 있습니까? 또한'ALPHA_SIZE = 27'입니까? – Arash