Οι δομές δεδομένων στοίβα και ουρά



Σχετικά έγγραφα
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

Κεφάλαιο 3 : εδοµένα. Πίνακες Στοίβα Ουρά Αναζήτηση Ταξινόµηση. Προγράµµατα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Επιµέλεια Θοδωρής Πιερράτος

Προγραμματισμός Η/Υ. Δομές Δεδομένων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ

Προγραμματισμός Η/Υ. 4 η ενότητα: Δομές Δεδομένων. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ. Πίνακες και βασικές επεξεργασίες αυτών

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

ENOTHTA 3 ΟΜΕΣ Ε ΟΜΕΝΩΝ

ΑΕΠΠ 7o Επαναληπτικό Διαγώνισμα

Φίλη μαθήτρια, φίλε μαθητή,

ΑΕΠΠ - ΗΜΕΡΗΣΙΑ ΛΥΚΕΙΑ ΘΕΜΑΤΑ ΚΑΙ ΛΥΣΕΙΣ

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ ΚΕΦΑΛΑΙΟ 3 ΠΡΟΣΘΗΚΗ

Τελικό διαγώνισμα. Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΘΕΜΑ Α

Κάθε στοιχείο που γίνεται αντιληπτό με μία από τις πέντε αισθήσεις μας

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Θέµατα 2012 Λύσεις. Θέµα Α Α1. 1. λάθος 2. λάθος 3. σωστό 4. λάθος 5. σωστό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Λύσεις Θεμάτων Επαναληπτικών Εξετάσεων Ενιαίου Λυκείου 2010

Δομές Δεδομένων (Data Structures)

ΘΕΜΑ Α. Λύση: 1. Σωστό, 2. Λάθος, 3. Σωστό, 4. Λάθος, 5. Λάθος. Ποια η διαφορά μεταξύ διερμηνευτή και μεταγλωττιστή; Απάντηση:

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Λύσεις Θεμάτων Εξετάσεων Ενιαίου Λυκείου 2012

Επανάληψη Θεωρίας. Καστούμης Γιώργος

Σε μια στοίβα 10 θέσεων έχουν τοποθετηθεί διαδοχικά τα στοιχεία: Σ, Γ, Μ, Α, Δ στην 1η, 2η, 3η, 4η και 5η θέση αντίστοιχα. Να προσδιορίσετε την τιμή

ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 05/03/2012 ΑΠΑΝΤΗΣΕΙΣ. ΘΕΜΑ Α Α1. Α2. 1. ΣΩΣΤΟ 1 στ 2. ΛΑΘΟΣ 2 δ 3. ΣΩΣΤΟ 3 ε 4. ΛΑΘΟΣ 4 β 5. ΣΩΣΤΟ 5 γ

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ. Όνομα:.. Βαθμός: /100

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Λύσεις Θεμάτων Επαναληπτικών Εξετάσεων Ενιαίου Λυκείου 2006

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

1-ΛΑΘΟΣ, 2-ΛΑΘΟΣ, 3-ΣΩΣΤΟ, 4-ΛΑΘΟΣ, 5-ΣΩΣΤΟ. Τύπος Μεταβλητής Χ

Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2016

Α1. Να γράψετε τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα τη λέξη ΣΩΣΤΟ, αν είναι σωστή ή τη λέξη ΛΑΘΟΣ, αν είναι λανθασμένη.

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΑΝΑΠΤΥΞΗΣ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ ΤΗΣ Γ' ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

Α1. Χαρακτηρίστε τις παρακάτω προτάσεις ως σωστές ή λανθασμένες.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και τον αντίστοιχο χαρακτηρισμό ( Σ - σωστό, Λ - λάθος)

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

Κεφάλαιο 2.2: Αλγόριθμοι. Επιστήμη ΗΥ Κεφ. 2.2 Καραμαούνας Πολύκαρπος

Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Επιμέλεια: Ομάδα Διαγωνισμάτων από Το στέκι των πληροφορικών

ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 05/03/2012

Εισαγωγή στις Αρχές της επιστήμης των Η/Υ. Β Λυκείου

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝΩ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ, ΕΡΕΥΝΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΙΝΣΤΙΤΟΥΤΟ ΕΚΠΑΙΔΕΥΤΙΚΗΣ ΠΟΛΙΤΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗ ΒΙΒΛΙΟ ΜΑΘΗΤΗ ΣΥΜΠΛΗΡΩΜΑΤΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΥΛΙΚΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ 2002

ΚΕΦΑΛΑΙΟ 3 Ο ΟΜΕΣ Ε ΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Ενδεικτικές Απαντήσεις στο μάθημα Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

ΘΕΜΑ Α: Μονάδες 12. Δ. Δίνεται ο πίνακας δύο διαστάσεων

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ 2002

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

Προτεινόμενος τρόπος διδασκαλίας του μαθήματος με ενδεικτικό χρονοπρογραμματισμό. Α/Α Ενότητες Περιγραφή Ώρες 1 Εισαγωγικό μάθημα 1

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΔΙΑΓΩΝΙΣΜΑ ΣΤΟ ΜΑΘΗΜΑ «ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ»

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

ΑΕΠΠ 6o Επαναληπτικό Διαγώνισμα

Α2. Οι πίνακες ακεραίων Α και Β είναι μονοδιάστατοι με πέντε και τρία στοιχεία αντίστοιχα. Τα περιεχόμενα τους είναι:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ

ΘΕΜΑ 1 Ο Α1. Δίνονται οι παρακάτω εντολές από ένα τμήμα προγράμματος:

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

σας φύλλο τον αριθμό της ερώτησης ακολουθούμενη από το γράμμα Σ (Σωστή) ή το γράμμα Λ (Λάθος).

Αν τότε. Αν Χ>Y και Y 1 τότε Ζ Χ/(Y-1) Εμφάνισε Ζ αλλιώς_αν Χ>Y και Y=1 τότε Ζ Y/X Εμφάνισε Ζ Τέλος_αν ... αλλιώς. Τέλος_αν.

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΚΑΙ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ ΟΙ ΠΙΟ ΣΗΜΑΝΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ

ΘΕΜΑ 1 ο. β) 1. δυαδική 2. κατανόηση 3. τυπικοί 4. τεχνητής νοημοσύνης 5. ακέραιου

1. Ουρά α. Απώθηση 2. Στοίβα β. Εξαγωγή γ. Ώθηση δ. Εισαγωγή

ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / ΘΕΡΙΝΑ ΣΕΙΡΑ: 1 η ΗΜΕΡΟΜΗΝΙΑ: 08 / 02 / 2015 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι. ΜΙΧΑΛΕΑΚΟΣ- Α.ΚΑΤΡΑΚΗ - Π.

Διορθώσεις σελ

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

Α4. Όσο επανάλαβε Τέλος_επανάληψης Εμφάνισε Για από μέχρι με_βήμα. Όσο επανάλαβε (Μονάδες 5) Α5. Α[10, 5] Π, Για από μέχρι (1) Για από μέχρι (2) Αν

Επιµέλεια : ΜΙΧΑΛΗΣ ΑΡΤΑΒΑΝΗΣ κλάδου Πληροφορικής ΠΕ19 1

Δομές Δεδομένων & Αλγόριθμοι

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

ΕΞΕΤΑΣΕΙΣ ΠΡΟΣΟΜΟΙΩΣΗΣ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: 7

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

ΚΕΦΑΛΑΙΟ ΙΙΙ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Φάσμα προπαρασκευή για Α.Ε.Ι. & Τ.Ε.Ι.

Transcript:

Καθηγητής Πληροφορικής Απαγορεύεται η αναπαραγωγή των σημειώσεων χωρίς αναφορά στην πηγή Βίντεο: https://youtu.be/j8petzztqty Οι δομές δεδομένων στοίβα και ουρά Εισαγωγή Στα πλαίσια του μαθήματος της Ανάπτυξης Εφαρμογών σε Προγραμματιστικό Περιβάλλον, οι δομές στοίβα και ουρά υλοποιούνται με -στατικούς- πίνακες. Συνεπώς, θεωρούνται και αυτές στατικές δομές αν και στη βιβλιογραφία εμφανίζονται και άλλες προσεγγίσεις. Στοίβα Το σχολικό βιβλίο αναδεικνύει 5 βασικά στοιχεία για τη στοίβα: 1. Προσομοιώνεται με μια στοίβα πιάτων. 2. Νέα στοιχεία εισέρχονται πάντα από την κορυφή (top) και εξέρχονται επίσης από την κορυφή. Η λειτουργία αυτή ονομάζεται και LIFO (Last In First Out) ή τελευταίο μέσα, πρώτο έξω. 3. Οι δυο κύριες λειτουργίες μιας στοίβας είναι: - ώθηση (push) στην κορυφή της στοίβας, - απώθηση (pop) από την στοίβα 4. Πρέπει να λαμβάνεται ειδική μέριμνα ώστε: - κατά την ώθηση δεν πρέπει η στοίβα να είναι γεμάτη: υπερχείλιση (overflow) - να μην πραγματοποιείται απώθηση από άδεια στοίβα: υποχείλιση (underflow). 5. Η στοίβα υλοποιείται με μονοδιάστατο πίνακα και μεταβλητή με όνομα κορυφή (top). Μέχρι το σχολικό έτος 2014-2015 η ύλη της ΑΕΠΠ περιελάμβανε μόνο θεωρητικές ασκήσεις μελέτης στοίβας και προσθαφαίρεσης στοιχείων με την καταγραφή και παρακολούθηση των στοιχείων της (ενδεικτικά θέματα ακολουθούν στην τελευταία σελίδα). 1

Παρακάτω παρουσιάζονται κωδικοποιήσεις σε ΓΛΩΣΣΑ (τμήματα προγράμματος) για τις ενέργειες της ώθησης και της απώθησης σε πίνακα ΣΤΟΙΒΑ με Ν στοιχεία (έστω ότι Ν=100). Άλλες ενέργειες που μπορούν να υλοποιηθούν σε μια στοίβα είναι, φυσικά, η προσπέλαση και η αναζήτηση, ενώ δε θα μπορούσε να υλοποιηθεί η ταξινόμηση καθώς θα αλλοίωνε τη διάταξη των στοιχείων. ΩΘΗΣΗ Αν υπάρχει χώρος τότε Τοποθέτησε το στοιχείο Ενημέρωσε το δείκτη! ΣΤΟΙΒΑ, Ν στοιχεία! δείκτης κορυφή Αν κορυφή < Ν τότε! έλεγχος για υπερχείλιση Διάβασε νέο! νέο στοιχείο κορυφή κορυφή + 1 ΣΤΟΙΒΑ[κορυφή] νέο έγινε Ψευδής ΑΠΩΘΗΣΗ Αν υπάρχει τουλάχιστον 1 στοιχείο τότε Ενημέρωσε το δείκτη! ΣΤΟΙΒΑ, Ν στοιχεία! δείκτης κορυφή Αν κορυφή >= 1 τότε! <> 0, υπάρχει στοιχείο Γράψε ΣΤΟΙΒΑ[κορυφή]! στοιχείο εξόδου κορυφή κορυφή 1 έγινε Ψευδής Σχόλια: Στην απώθηση δεν διαγράφεται το στοιχείο, στην πραγματικότητα δε γίνεται καμία παρέμβαση στον πίνακα. Ο δείκτης κορυφή δείχνει σε άλλη θέση και το υπό απώθηση στοιχείο, το πρώην τελευταίο στη στοίβα, δεν υπόκειται σε επεξεργασία. Ο δείκτης κορυφή καθορίζει το ενεργό μέρος του πίνακα που υποβάλλεται σε επεξεργασία. 2

Ουρά Το σχολικό βιβλίο αναδεικνύει 5 βασικά στοιχεία για τη ουρά: 1. Προσομοιώνεται με μια ουρά αναμονής π.χ. στο ταμείο μιας τράπεζας. 2. Τα νέα στοιχεία της ουράς εισέρχονται στο τέλος της (rear), ενώ κάθε εξερχόμενο στοιχείο αφαιρείται από την αρχή (front) της ουράς. Η λειτουργία αυτή ονομάζεται και FIFO (First In First Out) ή πρώτο μέσα, πρώτο έξω. 3. Οι δυο κύριες λειτουργίες μιας ουράς είναι: - εισαγωγή (enqueue) στο πίσω άκρο της ουράς, - εξαγωγή (dequeue) από το εμπρός άκρο της ουράς. 4. Πρέπει να ελέγχεται κατά την εισαγωγή στοιχείου αν υπάρχει ελεύθερος χώρος στην ουρά (αφού είναι στατική δομή δεδομένων) και κατά την εξαγωγή αν υπάρχει τουλάχιστον ένα στοιχείο. 5. Η ουρά υλοποιείται με μονοδιάστατο πίνακα και δυο μεταβλητές-δείκτες: εμπρός (front) και πίσω (rear). Μέχρι το σχολικό έτος 2014-2015 η ύλη της ΑΕΠΠ περιελάμβανε μόνο θεωρητικές ασκήσεις μελέτης ουράς και προσθαφαίρεσης στοιχείων με την καταγραφή και παρακολούθηση των στοιχείων της (ενδεικτικά θέματα ακολουθούν στην τελευταία σελίδα). Παρακάτω παρουσιάζονται οι κωδικοποιήσεις σε ΓΛΩΣΣΑ για τις ενέργειες της εισαγωγής και της εξαγωγής σε μονοδιάστατο πίνακα ΟΥΡΑ με Ν στοιχεία (έστω ότι Ν=100). Άλλες ενέργειες που μπορούν να υλοποιηθούν σε μια στοίβα είναι φυσικά η προσπέλαση και η αναζήτηση, ενώ δε θα μπορούσε να υλοποιηθεί η ταξινόμηση καθώς θα αλλοίωνε τη διάταξη των στοιχείων. Στη βιβλιογραφία παρουσιάζονται 2 υλοποιήσεις για την ουρά: 1. η γραμμική υλοποίηση: όπου κάθε νέο στοιχείο εισάγεται στο τέλος της ουράς. Αν το τελευταίο στοιχείο της ουράς βρίσκεται στην τελευταία θέση του πίνακα, τότε για την εισαγωγή νέων στοιχείων απαιτείται η μεταφορά όλων των στοιχείων στην κορυφή της ουράς, ώστε να αποδεσμευτεί χώρος στο πίσω μέρος. Διαφορετικά συμβαίνει υπερχείλιση. Χωρίς τις εργασίες συντήρησης, ο κώδικας απλοποιείται αλλά, θα υπήρχε το ενδεχόμενο να υπάρχει χώρος στην ουρά, αλλά να μη μπορεί να χρησιμοποιηθεί. 2. η υλοποίηση κυκλικής ουράς: όταν το τελευταίο στοιχείο της ουράς είναι στην τελευταία θέση του πίνακα, τότε εισάγονται (αν υπάρχει ελεύθερος χώρος) νέα στοιχεία στην αρχή του πίνακα (νοητός κύκλος) με προσεκτικό χειρισμό των δεικτών. Σχόλια και για τις 2 υλοποιήσεις: - αρχικές τιμές (άδεια ουρά): εμπρός = 0, πίσω = 0 - πλήθος στοιχείων (όχι άδειας) ουράς: (N + πίσω - εμπρός) mod N + 1 3

ΕΙΣΑΓΩΓΗ σε γραμμική υλοποίηση ουράς Αν υπάρχει χώρος τότε Αν χρειάζεται κάνε εργασίες συντήρησης Τοποθέτησε το στοιχείο Ενημέρωσε το δείκτη πίσω - αν ήταν άδεια ενημέρωσε δείκτη εμπρός Αν εμπρός = 1 και πίσω = Ν τότε! γεμάτη ουρά; έγινε Ψευδής! δεν υπάρχει χώρος! το στοιχείο μπορεί να εισαχθεί Αν πίσω = Ν τότε! υπάρχει χώρος αλλά όχι πίσω! μεταφορά στοιχείων εμπρός (συντήρηση ουράς) κ 0 Για ι από εμπρός μέχρι πίσω κ κ + 1 ΟΥΡΑ[κ] ΟΥΡΑ[ι] Τέλος_επανάληψης πίσω κ ΕΞΑΓΩΓΗ σε γραμμική υλοποίηση ουράς Αν υπάρχει τουλάχιστον 1 στοιχείο τότε Ενημέρωσε το δείκτη: - ή έχει 1 μόνο στοιχείο (αρχικοποίηση) - ή ο δείκτης εμπρός αυξάνεται κατά 1 Αν εμπρός=0 και πίσω = 0 τότε έγινε Ψευδής! άδεια ουρά! τουλάχιστον 1 στοιχείο Γράψε ΟΥΡΑ[εμπρός]! στοιχείο εξόδου Αν εμπρός = πίσω τότε! αν μόνο 1 στοιχείο την αδειάζω εμπρός 0 πίσω 0 εμπρός εμπρός + 1 Διάβασε νέο! νέο στοιχείο Αν εμπρός = 0 και πίσω = 0 τότε! αν ουρά άδεια! εισαγωγή στοιχείου πίσω πίσω πίσω + 1 ΟΥΡΑ[πίσω] νέο 4

ΕΙΣΑΓΩΓΗ σε κυκλική υλοποίηση ουράς Αν υπάρχει χώρος τότε Τοποθέτησε το στοιχείο Ενημέρωσε το δείκτη πίσω - αν ήταν άδεια ενημέρωσε δείκτη εμπρός - αν έφτασε στο τέλος, συνέχεια στην αρχή Αν (εμπρός = 1 και πίσω = Ν) ή (εμπρός = πίσω + 1) τότε! γεμάτη ουρά; έγινε Ψευδής! δεν υπάρχει χώρος! το στοιχείο μπορεί να εισαχθεί Αν εμπρός = 0 και πίσω = 0 τότε! αν ουρά άδεια! εισαγωγή στοιχείου πίσω Αν πίσω = Ν τότε πίσω 1 πίσω πίσω + 1 Διάβασε νέο! νέο στοιχείο ΟΥΡΑ[πίσω] νέο ΕΞΑΓΩΓΗ σε κυκλική υλοποίηση ουράς Αν υπάρχει τουλάχιστον 1 στοιχείο τότε Ενημέρωσε το δείκτη: - ή έχει 1 μόνο στοιχείο (αρχικοποίηση) - ή ο δείκτης εμπρός αυξάνεται κατά 1 - αν έφτασε στο τέλος, εκκίνηση από την αρχή Αν εμπρός=0 και πίσω = 0 τότε έγινε Ψευδής! άδεια ουρά! τουλάχιστον 1 στοιχείο Γράψε ΟΥΡΑ[εμπρός]! στοιχείο εξόδου Αν εμπρός = πίσω τότε! αν μόνο 1 στοιχείο την αδειάζω εμπρός 0 πίσω 0 Αν εμπρός = Ν τότε εμπρός εμπρός + 1 5

ΠΡΟΣΠΕΛΑΣΗ σε γραμμική και κυκλική υλοποίηση ουράς Αν δεν είναι άδεια τότε Ξεκίνα από τον δείκτη εμπρός Εμφάνισε μέχρι το δείκτη πίσω - αν χρειαστεί ξεκίνα από την αρχή του πίνακα (κυκλική ουρά) Αν εμπρός = 0 και πίσω = 0 τότε! είναι άδεια; Γράψε 'Η ουρά δεν περιέχει στοιχεία' δ εμπρός Όσο δ <> πίσω επανάλαβε Γράψε ΟΥΡΑ[δ] δ (Ν + δ) mod N + 1 Τέλος_επανάληψης Γράψε ΟΥΡΑ[πίσω] Σχόλια: Η κάθε μια από τις κωδικοποιήσεις αυτές αποτελούν τμήμα εντολών σε έναν αλγόριθμο διαχείρισης ουράς. Η προσπέλαση των στοιχείων της ουράς μπορεί να γίνει όπως η εμφάνιση των στοιχείων ενός πίνακα, στο ενεργό μέρος του πίνακα. Η αναζήτηση στοιχείου στην ουρά θα πραγματοποιηθεί με τον αλγόριθμο σειριακής αναζήτησης στο ενεργό μέρος του πίνακα. Στην εξαγωγή δεν διαγράφεται το στοιχείο, στην πραγματικότητα δε γίνεται καμία παρέμβαση στον πίνακα. Απλά ο δείκτης εμπρός δείχνει σε νέα θέση και το στοιχείο υπό εξαγωγή (που υπάρχει ακόμη στο κελί που βρισκόταν) δεν υπόκειται ξανά σε επεξεργασία. 6

Ενδεικτικά θεωρητικά θέματα Στοίβας και Ουράς Άσκηση 1 (Εξετάσεις 2006) Δίνεται η παρακάτω ακολουθία αριθμών: 25, 8, 12, 14, 71, 41, 1. Τοποθετούμε τους αριθμούς σε στοίβα και σε ουρά. α. Ποια λειτουργία θα χρησιμοποιηθεί για την τοποθέτηση των αριθμών στη στοίβα και ποια για την τοποθέτησή τους στην ουρά; β. Να σχεδιαστούν οι δύο δομές (στοίβα και ουρά) μετά την τοποθέτηση των αριθμών. γ. Ποια λειτουργία θα χρησιμοποιηθεί για την έξοδο αριθμών από τη στοίβα και ποια για την έξοδό τους από την ουρά; δ. Πόσες φορές θα πρέπει να γίνει η παραπάνω λειτουργία στη στοίβα και πόσες στην ουρά για να εξέλθει ο αριθμός 71; α. Για την τοποθέτηση αριθμών στη στοίβα θα χρησιμοποιηθεί η λειτουργία ώθηση και για την ουρά θα χρησιμοποιηθεί η λειτουργία εισαγωγή. β. Η Στοίβα θα είναι: 8 7 1 κορυφή =7 6 41 5 71 4 14 3 12 2 8 1 25 Η ουρά θα είναι: 1 2 3 4 5 6 7 8 25 8 12 14 71 41 1 εμπρός = 1 πίσω = 7 γ. Για την έξοδο αριθμών από τη στοίβα θα χρησιμοποιηθεί η λειτουργία απώθηση και για την ουρά θα χρησιμοποιηθεί η λειτουργία εξαγωγή. δ. Για να εξέλθει ο αριθμός 71, θα εκτελεστεί 3 φορές απώθηση από τη στοίβα, ενώ για την ουρά απαιτείται 5 φορές εκτέλεση εξαγωγής. Άσκηση 2. Ο μικρός Γιωργάκης διαθέτει έναν κερματοδέκτη με μια θέση υποδοχής όλων των τύπων κερμάτων (κερματοδέκτης-στήλη) και τοποθετεί εκεί όλα τα κέρματα που μαζεύει. Στον κερματοδέκτη έχει εισαγάγει από την τελευταία φορά που ήταν άδειος διαδοχικά τα εξής κέρματα: 2, 1, 0.50, 2, 0.50, 0.50, 0.20, 0.10. Θέλει να αγοράσει μια κάρτα αξίας 3 και είναι προφανές ότι διαθέτει τα χρήματα. α. Τι κέρματα θα έχει ο κερματοδέκτης του μετά την αγορά; Ποιες ενέργειες θα έχει πραγματοποιήσει; Θεωρούμε ότι όσα κέρματα δεν χρησιμοποιούνται τοποθετούνται εκ νέου στον κερματοδέκτη με την ίδια σειρά. β. Αν διέθετε κερματοδέκτη ώστε να μπορεί να βγάλει κέρματα από την κάτω μόνο άκρη, θα έκανε λιγότερες ενέργειες για να προμηθευτεί την κάρτα; 7