Liste mit lokalen Stacks
-
Hallo Community!
Und wieder einmal habe ich eine Frage an euch.

Bei folgendem Listing wird eine Liste erzeugt und die Daten werden "umgekehrt" (Stack) wieder ausgegeben. Es gibt auch lokale Stacks darin, doch irgendwie verstehe ich den Sinn der ganzen Sache nicht wirklich. Sind die lokalen Stacks, damit auch nur einzelne Teile der Liste ausgegeben werden können? Und warum stehen beim Parameter "TListenKnoten **Anker" zwei Sterne vor "Anker"?
#include <iostream> using namespace std; // Listenelement: Daten und ein Zeiger zum Nachfolger struct tListenKnoten { int data; tListenKnoten *next; }; // Schiebe ein Element auf den Stack-Anker void push(tListenKnoten **Anker, int data) { tListenKnoten *node = new tListenKnoten; node->data = data; node->next = *Anker; // Vorn einhängen *Anker = node; // Als erstes Element setzen } // Ziehe ein Element vom Stack-Anker int pop(tListenKnoten **Anker) { int inhalt=0; if (*Anker) // gibt es überhaupt Elemente? { tListenKnoten *old = *Anker; // Element sichern *Anker = (*Anker)->next; // Zweites Element wird Anker inhalt = old->data; // Daten übernehmen delete old; // Gesichertes Element kann gelöscht werden } return inhalt; } int main() // Testprogramm { tListenKnoten *Anker = 0; // lege einen Stack an push(&Anker, 2); // Elemente draufschieben push(&Anker, 5); push(&Anker, 18); cout << pop(&Anker) << endl; // Nacheinander abziehen cout << pop(&Anker) << endl; cout << pop(&Anker) << endl; }Vielen Dank schonmal für eure Hilfe!
-
Was sollen da "lokale Stacks" sein?
-
[url=http://c-plusplus.net/forum/viewtopic-var-t-is-254043.html]Ohje,
das wird nichts, wenn du dich mit Listen beschäftigen willst, musst du wissen was "Zeiger" ( Deswegen die Sternchen ) sind ( Auch gennant als Pointers ).[/url]
-
@müü: Mit "lokalen Stacks" ist anscheinend gemeint, dass die Anker übergeben werden können.
@OhNein: Natürlich weiss ich was Zeiger sind.

Momentan ist es mir aber noch ein Rätsel, warum es zwei Sterne braucht. Zeiger werden ja normalerweise mit nur einem Stern definiert.EDIT: Ich glaube ich habe es jetzt selber herausgefunden. Ist das, weil sozusagen eine Adresse auf einen Zeiger übergeben wird? Werden deshalb die beiden Sterne benötigt?
-
Miness schrieb:
@müü: Mit "lokalen Stacks" ist anscheinend gemeint, dass die Anker übergeben werden können.
@OhNein: Natürlich weiss ich was Zeiger sind.

Momentan ist es mir aber noch ein Rätsel, warum es zwei Sterne braucht. Zeiger werden ja normalerweise mit nur einem Stern definiert.EDIT: Ich glaube ich habe es jetzt selber herausgefunden. Ist das, weil sozusagen eine Adresse auf einen Zeiger übergeben wird? Werden deshalb die beiden Sterne benötigt?
Ja, aber so ein Zeiger ist ja im Prinzip auch nur eine 32-Bit-Zahl, die eine Adresse bedeutet. Nun kann man auch noch einen Zeiger auf so eine Zeigervariable machen, das ist dann Punkt7 von dem Link.
Edit: Ja, ganz genau.