0
typedef struct node {
int num_children;
struct node *children[ALPHABET_LENGTH];
} trie_node;
void add(char* a, trie_node* node){//need to make sure a is not NULL at beginning
trie_node* newNode;
int i;
if (a != NULL && node->children[(int)a[0] - 97] == NULL)
{
node->num_children++;
//initialize the children array
for (i = 0; i < ALPHABET_LENGTH; i++)
{
if (newNode->children[i] != NULL)
{
newNode->children[i] = NULL;
}
}
newNode -> num_children = 0;
a++;
add(a, newNode);
}
else if (a != NULL && node->children[(int)a[0] - 97] != NULL){
a++;
node->num_children++;
add(a, node->children[(int)a[0] - 97]);
} else{//a == NULL, which means end of the add procedure
return;
}
}
int main()
{
char* s = "add abc";
trie_node* contacts;
add(s,contacts);
return 0;
}
當我初始化main函數中的struct trie_node時,我可以訪問聯繫人的所有成員。但是,當我在我的add函數中這樣做時,newNode不起作用。我無法在newNode下訪問像num_children這樣的成員。我怎麼能解決這個問題,如果我想要一個新的節點添加到聯繫人如何在函數中使用struct
您從未將'newnode'設置爲任何值。在將其傳遞給函數之前,您也不設置「聯繫人」。您的代碼遍佈全局的未定義行爲。 – kaylum
C或C++?下定決心。 – molbdnilo
另外你還沒有設置'contacts' – kuro