2012-04-04 87 views
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]指向沒有與節點本身搞混的任何東西。

+5

這裏有一個分號失蹤線路42 – wildplasser 2012-04-04 19:06:54

+0

你能不能粘貼到目前爲止你所做的一些代碼以及你面臨問題的地方? – keety 2012-04-04 19:08:30

回答

0

這很難說肯定沒有看到一些代碼,但我相信你想有一個Node** children_nodes,所以你可以做這樣的事情:

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