0

我有一棵树,每个节点都包含一个数组子节点(Node *children_nodes),以及名称(char *node_name)和父节点(Node *parent)。每一个都是动态的。我想从 *children_nodes 数组中删除一个子节点,释放分配给它的名称和子节点的内存(假设我们正在删除一个没有子节点的子节点),并将列表中最后一个子节点的位置移动到该位置我们刚刚删除的那个。如果我想使用它所在的位置,如何在不更改最后一个节点的情况下做到这一点。

示例-我有一个带有三个子节点的节点,我想释放 children_nodes[0] 分配的内存并将 children_nodes[2] 放在那个位置,最好只是让 children_nodes[0] 指向 children_nodes[2] 的节点,然后使 children_nodes[2] 指向任何内容,而不会弄乱节点本身。

4

1 回答 1

0

没有看到一些代码很难确定,但我相信你想要一个Node** children_nodes,所以你可以做这样的事情:

free(children_nodes[0]);
children_nodes[0] = children_nodes[2];
children_nodes[2] = 0;
于 2012-04-04T19:29:21.130 回答