Pascal-STAPEL(sortieralgorithmus)

  • Hallo! Hab hier ein Programm Stapelsort. Es sortiert halt die Zahlen.

    Unklar ist mir die Prozedur "Stapelzeigen": Wieso wird hier nicht direkt ausgegeben, sondern noch zweimal umgestapelt?? Das bringt es doch nicht! Bei zweimal umstapeln, wär ich doch wieder beim alten?!?
    Bitte Erklärung!

    Außerdem unklar, wie das ganze im Hauptprogramm ab "REPEAT" abläuft! Was passiert da genau (also Schritt für Schritt). Wäre ganz nett, wenn mir das jemand erklären könnte. Ich weiß zwar, dass irgendwie "umgestapelt" wird aber die Reihenfolge ist mir nicht ganz klar und wie das genau passiert!

    Ich hoffe mir kann jemand helfen.

    MfG
    Johannes

  • als pascal-unprofi will ichs trotzdem mal versuchen:

    stapelzeigen: die aufgabe ist, dass dein stapel von vorne bis hinten durchlaufen wird und jedes element ausgegeben wird. das blöde dabei ist, dass bei einem stapel nur das oberste element weggenommen werden kann (pop) und das oberste element eingefügt werden kann (push). darum ist es notwendig, einen zweiten stapel zu deklarieren (HILF), der als zwischenspeicher dient. das aktuell gepoppte element wird ausgegeben und auf HILF draufgelegt.
    da der originalstapel mit der ganzen popperei jetzt leer ist, muss dieser wieder in den originalzustand versetzt werden -> deshalb brauchst du die zweite schleife.
    einfach den zeiger umdrehen (also WURZEL:=HILF) funktioniert deshalb nicht, weil die reihenfolge dadurch umgekehrt wird (am besten aufzeichnen).


    soda, 2. frage: hier wird die sortierung vorgenommen. wenn du dir das ganze aufzeichnest, was da passiert verstehst du das sicher. MIN ist dein ergebnisstapel. da stehen die zufallszahlen abschliessend sortiert drin. HILF ist ein hilfsstapel. den brauchst du, um 2 werte zu vertauschen.


    verständlich?

    einfach nur genial: wenn man im wort "Mama" 4 buchstaben ändert, dann hat man auf einmal "Bier"

  • So also nochmal zu 2:
    Sag bescheid, wo ein Denkfehler liegt!
    Ich probiers einfach, obwohl ich nicht ganz weiterkomme:
    Also zuerst wird ja durch der ganze Sort-Stapel leer gemacht und auf den Min-Stapel übertragen, bis keine Elemente(nennt man das Elemente? oder kann ich knoten sagen?) mehr im Sort-Stapel sind. Dabei wird immer der Wert, auf den der Sort-Zeiger zeigt mit dem Wert, auf den der Min-Zeiger zeigt verglichen und wenn eben der Sort-Wert kleiner als Min ist, dann wird der Min-Wert (oder wie nennt man das? Objekt? Knoten? ka-korrektur bitte!!!) auf den Hilfs-Stapel gebracht und der Sort-Wert auf den Min-Stapel. Ist der Sort-Wert nicht kleiner als Min, kommt das Sort-Objekt/Knoten/oder what ever auf den Hilfsstapel, right?

    Doch was dann? Wird Sort=Hilf gesetzt??????? und Hilf=Nil??? Wieso? Wann passiert das? Oder kommt man wieder in die If Bedinung??? Oder fängt das wieder bei Repeat an? ICH HABE KEINE AHNUNG!

  • ich habs mir verkniffen und extra nicht stack geschrieben. du musst wissen, dass mein t nicht immer funkionier

    einfach nur genial: wenn man im wort "Mama" 4 buchstaben ändert, dann hat man auf einmal "Bier"

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!