2012-04-04 6 views
0

Ich habe einen Baum, jeder Knoten enthält ein Array Kinderknoten (Knoten * children_nodes), sowie der Name (char * knotenname) und übergeordnet (Node * Eltern). Jeder von diesen ist dynamisch. Ich möchte einen untergeordneten Knoten aus dem * children_nodes -Array löschen und den zugewiesenen Speicher für den Namen und die untergeordneten Elemente freigeben (also so tun, als würden wir ein untergeordnetes Kind löschen) und den Speicherort des letzten untergeordneten Elements der Liste verschieben Standort des gerade gelöschten. Wie kann ich dies tun, ohne dass der letzte Knoten geändert wird, wenn ich den Ort verwenden möchte, in dem er war.Ändern der Adresse eines Zeiger-Array-Daten

Beispiel- Ich habe einen Knoten mit drei Kindern, ich möchte children_nodes [0] zugeteilten Speicher und Setzen Sie children_nodes [2] an dieser Stelle, vorzugsweise machen children_nodes [0] auf den Knoten von children_nodes [2] und machen dann children_nodes [2] auf nichts, ohne mit dem Knoten selbst zu verkehren.

+5

Es wird ein Semikolon auf Linie fehlt 42. – wildplasser

+0

könnten Sie etwas Code von dem, was du bis jetzt gemacht hast und wo du ein Problem hast? – keety

Antwort

0

Es ist schwierig, sicher zu sagen, ohne irgendeinen Code zu sehen, aber ich glaube, Sie wollen ein Node** children_nodes, so können Sie nur so etwas tun:

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