Stacks



  • Guten Abend,

    Initialzustand eines Stacks s von Int. Werten:

    8 3 1 7 wobei 7 head ist.

    erste Frage. weiß man jetzt schon was push (drauflegen) und was pop (runternehmen ) ist?

    Ich verstehe das System nicht so richtig dahinter. Erste Aussage:

    int tmpl = s.pop();
    s.push( s.head() );
    

    Nun sollen wir die Auswertung aufschreiben. Kann mir das einer kurz bitte erklären.



  • push = drauf legen
    pop = runter holen

    Ist ja schon mal ganz richtig, aber da fehlt dir wohl noch Einiges an Grundlagen wennn du es nicht verstehst.

    Wennn du auf einen Stapel Teller einen oben drauf legst, nimmst du den obersten auch als ersten wieder runter um an den zweiten ranzukommen.

    EDIT:
    LIFO



  • Wenn du ein unix-ähnliches OS verwendest, dann ist der desk calculator dc eventuell schon installiert. Das ist ein stack basierter Rechner. Damit kannst du dein Ausgangsbeispiel wunderbar grafisch darstellen. --> man dc


  • Mod

    Das kann man sich wie eine Forenantwort vorstellen:

    Push: neue Antwort, Forenseite wächst nach unten.
    Pop: letzte Antwort ausschneiden und z.B. nach Papierkorb o.ä verlagern.

    Kurzfassung
    push Antwort
    pop Papierkorb.

    Das Prinzip ist z.B. sehr nützlich, wenn man Zahlenformate umwandeln möchte.
    z.B.
    dividiere 254:16
    -> 15 Rest 14 bzw. in hexadezimal E
    dividiere 15:16
    ->nö, aber Rest 15 in hexadezimal F
    da F als letztes angefügt wurde, wird F als erstes wieder ausgegeben, also ist 254 -> FE in Hex

    Für Additionsrechner sowieso praktisch, das ist dann wie bei der schriftlichen Addition von Hand. Bei Binärrechnungen z.B. geht es immer nur eins nach dem anderen. Das ist wirklich empfehlenswert, mal durchzuüben.


Log in to reply