2017-11-09 13 views
-2

나는 trie에 포함 된 단어를 인쇄하고 단어가 발생한 시간을 기록하는 코드 작업을하고 있습니다. 단어가 트라이에 추가 될 때 편지가 관련 노드의 요소에 저장되는 것이 가장 효과적인 방법이라고 생각했습니다. Occurrences는 기본적으로 단어의 끝을 알리는 플래그이며 단어의 마지막 문자 (단어 수를 나타냄) 인 경우 증분됩니다.인쇄 내용과 C에서 Trie의 수

이 시점에서 나는 지금 당장하고있는 직선보다는 노드의 모든 자식을 검사하는 루프를 얻는 방법을 찾고 있지만 어떻게 작동하는지 시각화 할 수는 없습니다. 아이디어? 지금

if(root != NULL) { 
    printf("%c\n", &root->letter); 
    printf("%d\n", &root->occurences); 
    int i; 
    for (i = 0; i < 26; i++) { 
     printTrie(root->children[i]); /* <-- Recursion */ 
    } 
} 

,이 루트 , 각각의 그 값의 값을 출력합니다 :

struct Node{ 
    char letter; 
    struct Node children[26]; 
    int occurences; 
}; 

printTrie(struct node root){ 
    int i = 1; 
    while(root[i] != NULL){ 
     fprint(root.letter); 
     printTrie(root->children[]); 
    } 
    i++; 
} 
+2

. 'root [i]'는'struct' * anything * 인'root'에는 유효하지 않습니다. 코드리스트에는 제공되지 않는 신비한'struct node'가 훨씬 적습니다. * 실제 * 코드를 게시하십시오. * please *. – WhozCraig

+2

포인터를 나타내는 여러 별표 (*)가 누락 된 것처럼 보입니다. 'struct Node' 안에'struct Node' 배열을 가질 수 없습니다; 우주는 구조를 견디기에 충분하지 않습니다. 'struct Node *'의 배열 ('struct Node'에 대한 포인터)을 가질 수 있습니다. 당신은 함수 호출도 아마'struct Node * root'를 가져야 만합니다 - 현재 값으로'struct node'를 취합니다. 그러나'struct node'가 어떻게 보이는지 보지 못했습니다. (C는 대소 문자를 구별하는 언어입니다). –

답변

0

당신이 찾고있는 말은 당신이 그것을 어떻게 여기 recursion입니다 어린이.

당신이이 printf가로 이동 루트 전에 각 자녀의 값을 인쇄하려면

에 대한 루프 유효 C 코드가 아닙니다