Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » dynamische Strukturen - Klausuraufgabe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.08.2015, 12:02 Uhr
Wambotation



Hey Leute, ich schreib morgen C++. Komm auch bissher echt gut zurecht nur jetzt beim durchsehen alter Klausuren kam mir eine Aufgabe die mich echt zum verzweifeln bringt. Vielleicht hat jemand von euch Ans�tze oder kann mir das ein wenig n�her bringen?


C++:
#include <iostream>

using namespace std;

struct Lelem
{
    int s;
    Lelem *n;
};

Lelem *anfang = NULL, *ende = NULL;

void abc(int k)
{
    Lelem *z = new Lelem;
    z->s = k;
    z->n = anfang;
    anfang = z;
    if(!z->n) ende = z;
}

void jkl(int k)
{
    Lelem *z = new Lelem;
    z->s = k;
    z->n = NULL;
    if(! ende) anfang = z;
    else ende->n = z;
    ende = z;
}

void zeige()
{
    Lelem *z = anfang;
    while(z)
        {
            cout << z->s << " ";
            z = z->n;
        }
    cout << "!\n";
}

void tue()
{
    Lelem *z = anfang;
    if(anfang == ende) return;
    anfang = anfang->n;
    z->n = NULL;
    tue();
    ende->ende->n = z;
    ende = z;
}

int main()
{
    zeige(); // Ausgabe: _______________
    tue();
    zeige(); // Ausgabe: _______________
    abc(1);
    zeige(); // Ausgabe: _______________
    tue();
    zeige(); // Ausgabe: _______________
    abc(2);
    zeige(); // Ausgabe: _______________
    tue();
    zeige(); // Ausgabe: _______________
    jkl(6);
    zeige(); // Ausgabe: _______________
    tue();
    zeige(); // Ausgabe: _______________
    jkl(9);
    zeige(); // Ausgabe: _______________
    tue();
    zeige(); // Ausgabe: _______________
    return 0;
}




Es geht einfach darum was ausgegeben wird. Das hab ich schonmal mit gemacht als ich versuchte es zu verstehen :

1) !
2) !
3) 1!
4) 1!
5) 21!
6) 12!
7) 126!
8) 621!
9) 6219!
10) 9126!

Zu meinen Programmierkenntnissen : C++ das Semester geh�rt aber nicht soo gut klargekommen, in Java kam ich besser klar falls es ggf Analogien gibt die bei einer Erkl�rung angebracht w�ren.

Bin f�r jede Hilfe dankbar!!

Mfg Erik
------
Edit: Quellcode neu formatiert.

Dieser Post wurde am 25.08.2015 um 18:47 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.08.2015, 13:26 Uhr
ao

(Operator)


Vermutlich etwas zu spät, aber:

Deine Ergebnisse sind richtig. Haste das selber rausgefunden, oder kompiliert und laufenlassen?

Erklärungen: Das Ganze ist eine Verwaltung für Integer-Daten in einer verketteten Liste.

zeige() zeigt den Listeninhalt von Anfang bis Ende und zum Schluss ein '!'.
abc() fügt den übergebenen Wert am Anfang der Liste ein.
jkl() fügt den übergebenen Wert am Ende ein.

Und tue() ist eine rekursive (sich selbst aufrufende) Funktion, die die Reihenfolge der Listenelemente umkehrt. Das wird erreicht, indem sie das erste Element aus der Liste aushängt (dadurch wird das nächste zum Anfangselement) und auf dem lokalen Stack zwischenspeichert, dann den rekursiven Aufruf macht (wenn das letzte erreicht ist, ist die Abbruchbedingung erfüllt, und es passiert nichts) und dann das gespeicherte Element am Ende wieder einhängt. Die Umkehr der Reihenfolge wird dadurch erreicht, dass das zuletzt ausgehängte Element als erstes wieder eingefügt wird.

Dieser Post wurde am 27.08.2015 um 00:46 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: