[c++] Problem mit rekursiver Ausgabe

Vektor

Erfahrenes Mitglied
Hallo zusammen,

ich hab folgende Klasse die als einfach verkettete Liste geführt wird:
C++:
class listenelement {
    char daten[30];
    listenelement* next;
public:
    void setdaten(char datenneu[30]);
    void init();
    void einfuegen(char datenneu[30]);
    void ausgeben();
    void ende();
    void ausgaberueckwaerts();
};
Nun soll ich in der Funktion "ausgaberueckwaerts" die in der Liste geführten Elemente verkehrt herum ausgeben. Also das letzte Element als erstes, dann das vorletze, usw. Die Aufgabenstellung gibt vor dass ich die Rückwärtsausgabe durch einen rekursiven Aufruf durchführen soll. Und genau dabei stehe ich total auf dem Schlauch und hoffe, dass euch dazu was einfällt. :-).

Danke im vorraus.
 
Hi.

Also da würd ich sagen: Da stelle mer uns ma janz dumm.

Was machen wir in der Funktion ausgaberueckwaerts() wenn wir uns am Ende der Liste befinden? Richtig wir geben das Element aus und sind fertig.

Was machen wir wenn wir noch nicht am Ende der Liste sind? Richtig, wir rufen erstmal die Funktion ausgaberueckwaerts() für das nächste Listenelement auf und geben dann erst das aktuelle Element aus und sind fertig.

Gruß
 
JO am besten du machst dir noch ein pointer der auf das vorherige listen element zeig. den nehnste das prev. Dann hasste ne doppelt verkettete liste. SO. Dann ist das genauso als würdest du mit next pointer navigieren bloß das der prev pointer auf das vorherige zeigt. Wenn nicht :suchen: und :rtfm:
 
Hi.
Messiahs_128 hat gesagt.:
JO am besten du machst dir noch ein pointer der auf das vorherige listen element zeig. den nehnste das prev. Dann hasste ne doppelt verkettete liste. SO. Dann ist das genauso als würdest du mit next pointer navigieren bloß das der prev pointer auf das vorherige zeigt. Wenn nicht :suchen: und :rtfm:
Aber er wollte ja gar keine doppelt verkettete Liste, er wollte doch nur die Liste so rekursiv ausgeben - und es bringt ihm ja auch gar nichts wenn er jetzt eine doppelt verkettete Liste hätte.

Und bitte halte dich etwas an die Rechtschreibung und Groß/Klein-Schreibung, das Kauderwelsch versteht ja sonst kein Mensch.

Gruß
 
Hi,

hat so nun geklappt:
C++:
void listenelement::ausgaberueckwaerts() {
    if (next != NULL) {
        next->ausgaberueckwaerts();
    }
    cout << daten << '\n';
}
Danke für den kleinen Denkanstoss. Ich saß echt wie ein Trottel davor und kam einfach nicht darauf.:-)

Bis dann.
 
Zurück