Oz zy schrieb:
> Nun möchte ich mich natürlich auch durch das Menü bewegen. Dafür habe
> ich einen Node "struct sNODE activeNode", den ich zuerst auf den
> root-Knoten setze:
>
Und genau das willst du nicht.
Wozu willst du Kopien der Menüknoten haben.
Alles was du willst, ist durch das Menü navigieren. Dazu brauchst du
aber keine Knotenkopien, sondern du brauchst einen Pointer auf den
Knoten, welcher der aktive Knoten ist.
Also einen
1 | struct sNODE *activeNode;
|
und du setzt ihn am Anfang auf die Root
> Das werte ich nun in der Funktion aus:
> void navigate(struct sNODE *sNode, char input)
Und da diese Funktion den sNode Pointer verändert, brauchst du eine
Möglichkeit, damit diese Funktion das auch kann.
Entweder du vereinbarst, dass die Funktion den jeweils neuen Node (ab
hier ist damit immer ein Pointer gemeint) als Returnwert liefert
1 | struct sNODE * navigate( struct sNODE *sNode, char input )
|
2 | {
|
3 | ...
|
4 | }
|
5 |
|
6 | ...
|
7 | activeNode = navigate( activeNode, 'c' );
|
8 | ...
|
oder du versetzt die Funktion in die Lage, das Pointerargument selbst zu
verändern
1 | void navigate(struct sNODE **sNode, char input)
|
2 | {
|
3 | ....
|
4 | }
|
5 |
|
6 | ....
|
7 | navigate( &activeNode, 'c' );
|