Στοίβα: πότε και γιατί χρησιμοποιούνται οι στοίβες προγραμματιστικά;

Ξεκίνησε από katkal, 05 Φεβ 2020, 12:28:51 ΠΜ

« προηγούμενο - επόμενο »

katkal

Καλησπέρα. Διαβάζω για τις στοίβες και τις διαφορές  που έχουν με τους πίνακες αλλά δεν μπορώ να καταλάβω πότε  και γιατί ένας προγραμματιστής θα χρησιμοποιήσει την δομή δεδομένων που λέγεται στοίβα.  Και γιατί να μην χρησιμοποιήσει έναν πίνακα,  όπου ο πίνακας και περισσότερες λειτουργίες έχει (εισαγωγή , διαγραφή κλπ) και άμεση πρόσβαση στα στοιχεία του έχει.
Μπορείτε να μου δώσετε ένα παράδειγμα;
Ευχαριστώ.

ApoAntonis

η απάντηση που αναζητάς -υποθέτω είσαι μαθητής; - υπάρχει γραμμένη στο βιβλίο σου
Ποιόοοοοοο από όλα;;;;; ακούω να ρωτάς.

Σελίδα 182 βιβλίο 1


Αν έχω πέσει έξω και δεν είσαι μαθητής, το κληρονομικό μου χάρισμα που πάντα πίστευα ότι έχω
αποδεικνύεται κάλπικο και ως τιμωρία, αν το διαβάσεις και δεν καταλάβεις αυτό που γράφει στο βιβλίο,
θα σου απαντήσω με καλύτερο παράδειγμα (ας το καταλάβει, ας το καταλάβει, ας το καταλάβει)

edit:
Αν είσαι πράγματι μαθητής, τότε μάλλον δεν θα το γνωρίζεις αυτό:
Σε πραγματικές γλώσσες προγραμματισμού υπάρχει η δυνατότητα οι πίνακες να λειτουργούν ως δυναμικές δομές.
Οπότε αυτό που κυρίως μας ενδιαφέρει στις στοίβες, δεν είναι η υλοποίηση αυτή καθ'αυτή,
αλλά ο τρόπος λειτουργίας τους.

akalest0s

Η βασική λειτουργία στα κουμπιά "πίσω/εμπρός", σε έναν browser. Ξέρεις, αυτά με τα οποία πηγαίνεις πίσω ή μπροστά στο ιστορικό. Ουσιαστικά αποτελούν υλοποίηση μιας στοίβας.
Ομοίως και για τις λειτουργίες των undo/redo, σε προγράμματα τύπου ms-word.
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

George Eco

Παράθεση από: akalest0s στις 05 Φεβ 2020, 02:53:35 ΠΜ
Η βασική λειτουργία στα κουμπιά "πίσω/εμπρός", σε έναν browser. Ξέρεις, αυτά με τα οποία πηγαίνεις πίσω ή μπροστά στο ιστορικό. Ουσιαστικά αποτελούν υλοποίηση μιας στοίβας.
Ομοίως και για τις λειτουργίες των undo/redo, σε προγράμματα τύπου ms-word.

Πολύ ωραία παραδείγματα.

gpapargi

Παράθεση από: katkal στις 05 Φεβ 2020, 12:28:51 ΠΜ
Καλησπέρα. Διαβάζω για τις στοίβες και τις διαφορές  που έχουν με τους πίνακες αλλά δεν μπορώ να καταλάβω πότε  και γιατί ένας προγραμματιστής θα χρησιμοποιήσει την δομή δεδομένων που λέγεται στοίβα.  Και γιατί να μην χρησιμοποιήσει έναν πίνακα,  όπου ο πίνακας και περισσότερες λειτουργίες έχει (εισαγωγή , διαγραφή κλπ) και άμεση πρόσβαση στα στοιχεία του έχει.
Μπορείτε να μου δώσετε ένα παράδειγμα;
Ευχαριστώ.


Φαντάσου ότι φτιάχνεις ένα πρόγραμμα που διασχίζει ένα λαβύρινθο.  Σε κάθε διασταύρωση παίρνεις ένα δρόμο και πετάς τους άλλους σε μια στοίβα. Όταν βρεθείς σε αδιέξοδο και θέλεις να πας πίσω, παίρνεις το πρώτο στοιχείο από τη στοίβα. Αυτό γίνεται γιατί θέλεις να δοκιμάσεις άλλο μονοπάτι στην τελευταία διασταύρωση και όχι στην πρώτη.
Γενικά όπου μπορείς να βρεις ένα πρόβλημα που χειρίζεσαι τα δεδομένα  με την ανάποδη σειρά αποθήκευσης, θέλεις στοίβα.
Πχ πας σε μια υπηρεσία και θέλεις το χαρτί Α. Σου λένε ότι για να σου δώσουν το Α πρέπει πρώτα να τους πας το Β. Πας να πάρεις το Β και σου λένε ότι για να πάρεις το Β πρέπει πρώτα να τους πας το Γ κλπ. Μόλις πάρεις το Γ δεν πας στο Α, αλλά πας στο Β. Τα Α, Β, Γ κλπ μπαίνουν σε στοίβα γιατί επιστρέφεις σε αυτά με την αντίστροφη σειρά με την οποία σου ζητήθηκαν. 
Τέτοιου τύπου παραδείγματα φαντάζομαι ζητάς.

tdrivas

Πέρα από back και Undo, επίσης σε:

-Memory Management
-Backtracking, π.χ. exhaustive searching
-Language processing, π.χ. Αναδρομή, συντακτικός έλεγχος, postfix/prefix



Thanassis Drivas
BSc in Computer Science
MSc in Space Science Applications and Technologies
https://github.com/tdrivas