Baumstrucktur = Klasse ???
-
Hallo!
Ich hoffe ich kann mich halbwegs verständlich ausdrücken.
Da mir bereits dies sehr schwer fällt, habe ich erst reht nichts bei google dazu gefunden.Ich möchte mir in C++ eine Klasse bastelt.
Sie soll ähnlich einem Baum aufgebaut sein.
In dem Baum sollen die "Eltern" auf die "Kinder" verweisen ... so sollte es ja auch bei einen Baum sein ... nun stehe ich vor dem Problem, dass die Anzahl der "Kinder" eines jeden "Eltern"-teil dynamisch sein soll. D.h. jedes "Eltern"-teil kann unterschiedlich viele Kinder haben.Ich weiß nun nicht, wie ich solch eine Klasse erstellen kann. Das muss irgendwie mit einer Liste möglich sein ... so glaube ich ... aber ich irre mich sicherlich auch ...
Ein Beispiel wäre sehr hilfreich!!!
Danke - Ich hoffe ihr erkennt das Problem ...
-
Sowas?
class Child { int child; }; class Parent { public: DynamicArray<Child*> Children; }; void main() { Parent *par=new Parent(); par->Children.Length=2; //2 neue Childs for(int i=0; i<par->Children.Length; i++) //erstellen und { par->Children[i]=new Child(); } //initialisieren }Siehe auch: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39211.html
-
Hallo
schau dir TTreeNode an, das ist genau dasselbe.
Da werden die einzelnen Nodes als eigentlich plattes 1-dimensionales Array verwaltet. Aber da jeder Node genau einen Parent, und beliebig viele Subnodes haben kann, kann so eine virtuelle Baumstruktur abgebildet werden.
Wenn du einen echten Baum haben willst, kommst du um ein Einarbeiten in gewisse Grundregeln der Graphentheorie nicht umhin.
bis bald
akari
-
Hallo
@ rean : das erzeugt (noch) nur ein eindimensionales Array, aber keinen Baum.
bis bald
akari
-
Ich danke dir für die schnelle und funktionierende Lösung!
Wie greife ich dann auf die "Kinder" zu?
So: a = par->Children[i]->child; bringt er nen Fehler
-
Ich seh gerade ... was fürn dummer Fehler
class Child { int child; // stand nicht im public };@akari auch dir danke ich! Die Lösung von rean genügt mir jedoch
Schönen Abend noch!
-
Ja schon klar dass mein Beispiel kein richtiger Baum ist.
Aber von dieser Lösung darauf zu kommen der Klasse Child ein eigenes dynamisches Array von Child zu geben ist ja nicht mehr sooo schwer.class Child { public: DynamicArray<Child*> Children; int child; // stand nicht im public };
-
Ich habs so hinbekommen, wie ich wollte ... ich bedanke mich ganz Herzlich bei euch beiden!
-
Nachmal ne kleine Frage.
Wie bekomme ich es hin, dass die "Kinder" auf elemente der selben Klasse zeigen?
cpp]class CKnoten
{
public:
CKnoten Parent;
DynamicArray<CKnoten> *Children;
};
[/cpp]