Προσπέλαση Στοίβας

Ξεκίνησε από stavrax, 27 Νοε 2019, 01:26:51 ΜΜ

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

stavrax

Γεια χαρά σε όλους.
Αν υποθέσουμε ότι μια στοίβα έχει 5 στοιχεία μπορούμε να προσπελάσουμε άμεσα το 3ου στοιχείο
ή θα πρέπει να πρώτα να το απωθήσουμε  (αφού πρώτα βγάλουμε τα από πάνω...) ;

Σύμφωνα με τις λύσεις του νέου βιβλίου μια στοίβα μπορεί να υλοποιηθεί και με την βοήθεια μιας απλά συνδεδεμένης λίστας.Σύμφωνα με αυτήν την θεώρηση μπορούμε να διατρέξουμε την λίστα μέχρι τον τρίτο κόμβο.

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



pgrontas

Η στοίβα θεωρητικά δεν σου δίνει δικαίωμα άμεσης προσπέλασης οποιοδήποτε στοιχείου. Οι μόνες λειτουργίες είναι η ώθηση απώθηση. Οπότε δεν μπορείς να φτάσεις άμεσα στο 3 στοιχείο, χωρίς να απωθήσεις τα προηγούμενα.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

stavrax

Σε ευχαριστώ pg για την απάντηση. Μπορείς να διευκρινήσεις τι εννοείς με την λέξη θεωρητικά;
Eεπιπλέον το σχολικό βιβλίο δεν χρησιμοποιεί την λέξη οι μόνες λειτουργίες αλλά οι κύριες. Η λέξη κύριες δεν υπονοεί ότι υπάρχουν και άλλες; (πχ στην java οι λειτουργίες του αντικειμένου stack είναι εκτός από push, pop και η peek και η search)

pgrontas

Εννοώ ως αφηρημένη δομή δεδομένων. Δηλαδή αν το βλέπαμε ως κλάση, οι μόνες public μέθοδοι θα έπρεπε να ήταν push και pop.
Στην πράξη, σε μια υλοποίηση, κάπου θα πρέπει να βάζεις τα στοιχεία. Αυτό όμως δεν θα πρέπει να φαίνεται από έξω.
Βέβαια όπως λένε η διαφορά της θεωρίας από την πράξη στην θεωρία δεν υπάρχει, ενώ στην πράξη υπάρχει. Έτσι και οι διάφορες γλώσσες προγραμματισμού, μπορεί να εμφανίζουν και κάποιες άλλες μεθόδους για να διευκολύνουν τους προγραμματιστές (όπως στη Java). Αυτό όμως δεν σημαίνει ότι καταργούμε την ουσία της δομής, κάνοντας πχ. άμεση προσπέλαση. Αυτό έχει ιδιαίτερα σημασία στην εκπαίδευση.
Σε ότι αφορά το κύριες έχω σταματήσει να ερμηνεύω το βιβλίο κυριολεκτικά, γιατί θεωρώ ότι οι συγγραφείς έγγραφαν ελεύθερα χωρίς να έχουν στο μυαλό τους ότι μετά από 10+ χρόνια θα ψειρίζουμε τις λέξεις τους, εξαιτίας του τρόπου με τον οποίο αντιμετωπίζουμε τη γνώση όταν πρόκειται για πανελλήνιες.
Στη συγκεκριμένη περίπτωση, νομίζω ότι χρησιμοποιούν το κύριες για να τις διαχωρίσουν από άλλες γενικές λειτουργίες όπως αντιγραφή κλπ.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

stavrax

#4
Νομίζω ότι το thread το άνοιξε πάλι το νέο βιβλίο με την δραστηριότητα στην σελίδα 42:

ΠαράθεσηΕντοπίστε τις διαφορές στην προσπέλαση όσον αφορά τη λίστα, τη στοίβα και την ουρά. Για την απάντησή σας σκεφθείτε αν η εισαγωγή ενός στοιχείου σε μία στοίβα μπορεί να γίνει σε οποιαδήποτε θέση της. 

pg θα συμφωνήσω μαζί σου. Το θέμα είναι ότι πρέπει να απαντήσουμε στην παραπάνω ερώτηση.

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

δεν αναφέρουν τίποτε περί προσπέλασης !!



Τι λέμε στα παιδιά;
Την θεωρία (βλέπε στοίβα με πιάτα),  την πράξη (βλέπε java) ή τίποτε (βλέπε βιβλίο);



Ασχετο: { Σκαλίζοντας στο στέκι βρήκα το thread

https://alkisg.mysch.gr/steki/index.php?topic=6420.msg75553#msg75553

προς admin να μεταφέρω την ερώτησή μου εκεί; }