更改指针数组数据的地址

时间:2012-04-04 18:59:33

标签: c

我有一棵树,每个节点都包含一个数组子节点(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]在没有弄乱节点本身的情况下指向任何东西。

1 个答案:

答案 0 :(得分:0)

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

free(children_nodes[0]);
children_nodes[0] = children_nodes[2];
children_nodes[2] = 0;