所以,我正在处理树,在进行插入时,我需要修改一个我作为参数传递的节点。
发生了什么:
(为简单起见,我将举例说明添加树的第一个节点的情况)
在insert_node_loop
之后,我检查tree->root
并且它仍然指向NULL
,即使node
和x
都是正确的。
所以,我的想法是,node
可能没有更新参数,只是它的“本地”变量。但我不知道该怎么办。有人能开导我吗?
int insert(TREE* tree, ITEM* item){
NODE* x = insert_node_loop(tree->root, NULL, item);
// ...
}
NODE* insert_node_loop(NODE* node, ITEM* item){
if(node == NULL){
node = create_node(item);
}
// ...
return node;
}
答案 0 :(得分:3)
您需要使用指向指针的指针,这样您就可以修改其值:
int insert(TREE* tree, ITEM* item){
NODE* x = insert_node_loop(&tree->root, NULL, item);
// ...
}
NODE* insert_node_loop(NODE** node, ITEM* item){
if(*node == NULL){
*node = create_node(item);
}
// ...
return *node;
}