📘 Δομές Δεδομένων στην ΑΕΠΠ: Ο Πλήρης Οδηγός με Παραδείγματα σε ΓΛΩΣΣΑ
Οι δομές δεδομένων είναι τα θεμέλια κάθε αλγορίθμου - Στοίβα, Ουρά, Λίστες, Δέντρα, Γράφοι
Αν ο προγραμματισμός είναι η τέχνη του λύνειν προβλημάτων, οι δομές δεδομένων είναι τα εργαλεία που οργανώνουν τα «τούβλα» της λύσης. Στο σχολικό βιβλίο της ΑΕΠΠ (Κεφάλαιο 3), η θεωρία παρουσιάζεται με σαφήνεια, αλλά η μετάβαση από τη θεωρία στον κώδικα απαιτεί προσοχή, ειδικά όταν γράφουμε σε ΓΛΩΣΣΑ, μια γλώσσα που δεν διαθέτει δυναμική μνήμη ή πραγματικούς δείκτες.
Σε αυτό το άρθρο θα αναλύσουμε βήμα-βήμα όλο το Κεφάλαιο 3, θα εξηγήσουμε πώς μεταφέρονται οι έννοιες στη ΓΛΩΣΣΑ και θα δούμε πλήρη, συντακτικά σωστά παραδείγματα που σε προετοιμάζουν τόσο για τις Πανελλήνιες όσο και για την πραγματική προγραμματιστική σκέψη.
📖 Σε αυτόν τον οδηγό:
- 🔍 Τι είναι οι Δομές Δεδομένων
- ⚙️ Οι 8 Βασικές Λειτουργίες
- 📊 Στατικές vs Δυναμικές Δομές
- 🥞 Στοίβα (Stack) – LIFO με Κώδικα
- 🚶 Ουρά (Queue) – FIFO με Κώδικα
- 🔗 Συνδεδεμένες Λίστες & Προσομοίωση Δεικτών
- 🌳 Δέντρα & Δυαδικά Δέντρα Αναζήτησης (BST)
- 🌐 Γράφοι – Η Πιο Γενική Δομή
- 🧭 Πρακτικός Οδηγός Επιλογής Δομής
- 💡 Tips για Πανελλήνιες
- ❓ Συχνές Ερωτήσεις (FAQ)
🎥 Επεξηγηματικό Βίντεο για Δομές Δεδομένων
Δείτε το παρακάτω βίντεο για μια οπτική κατανόηση των δομών δεδομένων πριν προχωρήσετε στον κώδικα:
📌 Το βίντεο εξηγεί με παραστατικό τρόπο τις βασικές δομές δεδομένων (Στοίβα, Ουρά, Λίστα, Δέντρο, Γράφος)
🔍 1. Δεδομένα, Πληροφορία & Γιατί μελετάμε Δομές;
Τα δεδομένα είναι ακατέργαστα γεγονότα. Όταν τα επεξεργαστούμε με έναν αλγόριθμο, παράγουμε πληροφορία που οδηγεί σε αποφάσεις. Αυτός ο κύκλος (δεδομένα → αλγόριθμος → πληροφορία → απόφαση → νέα δεδομένα) είναι η καρδιά της Πληροφορικής.
Η Θεωρία Πληροφοριών μελετά τη μέτρηση, κωδικοποίηση και μετάδοση της πληροφορίας, ενώ η Πληροφορική προσεγγίζει τα δεδομένα από 4 σκοπιές:
- Υλικού (δυαδική, ASCII, συμπλήρωμα 2 κ.λπ.)
- Γλωσσών Προγραμματισμού (τύποι μεταβλητών, μεταγλώττιση)
- Δομών Δεδομένων (σύνολο δεδομένων + επιτρεπτές λειτουργίες)
- Ανάλυσης Δεδομένων (βάσεις δεδομένων, μοντελοποίηση, αναπαράσταση γνώσης)
📌 Συμπέρασμα: Η δομή δεδομένων δεν είναι απλά «ένας πίνακας». Είναι ένας οργανισμός που καθορίζει πώς αποθηκεύονται, πώς προσπελαύνονται και πώς μεταβάλλονται τα δεδομένα.
⚙️ 2. Τι είναι Δομή Δεδομένων & Οι 8 Βασικές Λειτουργίες
Ορισμός (3.3): Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Αποτελείται από κόμβους.
Οι βασικές λειτουργίες είναι 8:
| Λειτουργία | Περιγραφή |
|---|---|
| Προσπέλαση | Ανάγνωση/τροποποίηση κόμβου |
| Εισαγωγή | Προσθήκη νέου κόμβου |
| Διαγραφή | Αφαίρεση κόμβου |
| Αναζήτηση | Εντοπισμός κόμβου με συγκεκριμένη ιδιότητα |
| Ταξινόμηση | Διάταξη κατά αύξουσα/φθίνουσα σειρά |
| Αντιγραφή | Μεταφορά κόμβων σε άλλη δομή |
| Συγχώνευση | Ένωση δομών |
| Διαχωρισμός | Αντίστροφη της συγχώνευσης |
⚠️ Σημείωση: Στις στατικές δομές, οι λειτουργίες Εισαγωγή & Διαγραφή δεν έχουν νόημα.
📐 Η Εξίσωση του Wirth: Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
Η επιλογή της σωστής δομής μπορεί να μετατρέψει έναν αλγόριθμο O(n²) σε O(log n) ή O(1).
📊 3. Στατικές vs Δυναμικές Δομές στο ΑΕΠΠ
| Χαρακτηριστικό | Στατικές | Δυναμικές |
|---|---|---|
| Μέγεθος | Καθορίζεται κατά τον προγραμματισμό/μετάφραση | Μεταβάλλεται κατά την εκτέλεση |
| Μνήμη | Συνεχόμενες θέσεις | Μη συνεχόμενες (δείκτες) |
| Παράδειγμα | Πίνακες στη ΓΛΩΣΣΑ | Λίστες, Δέντρα, Γράφοι |
| Ευελιξία | Περιορισμένη | Υψηλή |
💡 Πρακτικό για ΓΛΩΣΣΑ: Η ΓΛΩΣΣΑ δεν υποστηρίζει malloc, new ή πραγματικούς δείκτες. Γι' αυτό στις Πανελλήνιες προσομοιώνουμε δυναμικές δομές με παράλληλους πίνακες και ακέραιους δείκτες (θέσεις πίνακα που παίζουν το ρόλο διευθύνσεων μνήμης).
🥞 4. Στοίβα (Stack) – LIFO με Κώδικα ΓΛΩΣΣΑ
LIFO: Last In, First Out. Το τελευταίο στοιχείο που μπαίνει, βγαίνει πρώτο.
Λειτουργίες:
- PUSH (ώθηση): Εισαγωγή στην κορυφή
- POP (απώθηση): Εξαγωγή από την κορυφή
- Έλεγχος: overflow (γεμάτη), underflow (κενή)
📝 Υλοποίηση σε ΓΛΩΣΣΑ (10 θέσεων)
Πρόγραμμα Στοίβα
Μεταβλητές
Ακέραιες: ΣΤ[10], top, i, x
Ακέραιες: επιλογή
Αρχή
top ← 0 ! Άδεια στοίβα
Αρχή_Επανάληψης
Γράψε "1. PUSH 2. POP 3. ΕΞΟΔΟΣ"
Διάβασε επιλογή
Αν επιλογή = 1 τότε
Αν top = 10 τότε
Γράψε "Υπερχείλιση (overflow). Η στοίβα είναι γεμάτη!"
Αλλιώς
top ← top + 1
Γράψε "Δώσε τιμή για ώθηση (push)"
Διάβασε x
ΣΤ[top] ← x
Γράψε "Επιτυχής ώθηση (push). Κορυφή: ",top
Τέλος_αν
Αλλιώς_αν επιλογή = 2 τότε
Αν top = 0 τότε
Γράψε "Υποχείλιση (underflow). Η στοίβα είναι άδεια"
Αλλιώς
Γράψε "Στοιχείο που βγήκε: ", ΣΤ[top]
top ← top - 1
Γράψε "Κορυφή: ",top
Τέλος_αν
Τέλος_αν
Μέχρις_ότου επιλογή = 3
Τέλος_Προγράμματος
🔑 Σημείωση ΑΕΠΠ: Στην απώθηση δεν «διαγράφουμε» πραγματικά την τιμή από τον πίνακα. Απλώς μειώνουμε τον top. Η μνήμη μένει, αλλά η δομή την αγνοεί.
🚶 5. Ουρά (Queue) – FIFO με Κώδικα ΓΛΩΣΣΑ
FIFO: First In, First Out. Το πρώτο που μπαίνει, βγαίνει πρώτο.
Δείκτες:
- front: δείχνει το πρώτο στοιχείο (εξαγωγή)
- rear: δείχνει το τελευταίο στοιχείο (εισαγωγή)
- Αρχικές τιμές: front ← 0, rear ← 0
📝 Υλοποίηση σε ΓΛΩΣΣΑ (με σωστό έλεγχο)
Πρόγραμμα Ουρά
Μεταβλητές
Ακέραιες: ΟΥ[10], front, rear, x, i
Ακέραιες: επιλογή
Αρχή
! Άδεια ουρά
front ← 0
rear ← 0
Αρχή_Επανάληψης
Γράψε "1. ΕΙΣΑΓΩΓΗ 2. ΕΞΑΓΩΓΗ 3. ΕΞΟΔΟΣ"
Διάβασε επιλογή
Αν επιλογή = 1 τότε
Αν rear < 10 τότε
rear ← rear + 1
Γράψε "Δώσε τιμή"
Διάβασε x
ΟΥ[rear] ← x
Γράψε "Εισήχθη στη θέση: ", rear
Αλλιώς
Γράψε "Ουρά γεμάτη"
Τέλος_αν
Αλλιώς_αν επιλογή = 2 τότε
Αν (front = 0 και rear = 0) τότε
Γράψε "Ουρά άδεια"
Αλλιώς_αν front = rear τότε
front ← 0
rear ← 0
Αλλιώς
front ← front + 1
Τέλος_αν
Τέλος_αν
Μέχρις_ότου επιλογή = 3
Τέλος_Προγράμματος
🔑 Σημαντική λεπτομέρεια: Αν front = rear σημαίνει ότι η ουρά έχει ένα μόνο στοιχείο, οπότε μετά την εξαγωγή αδειάζει άρα οι δείκτες γίνονται 0.
🔁 Προχωρημένο Tip (Κυκλική Ουρά): Για να μην «γλιστράει» η ουρά δεξιά άδικα, χρησιμοποιούμε modulo:
έλεγχος πλήρωσης: (rear + 1) mod 10 = front
Συχνά εξετάζεται σε θέματα 4ου θέματος!
🔗 6. Συνδεδεμένες Λίστες & Προσομοίωση Δεικτών
Οι δείκτες είναι μεταβλητές που αποθηκεύουν διευθύνσεις μνήμης. Στη ΓΛΩΣΣΑ τους προσομοιώνουμε με ακέραιους που δείχνουν θέσεις πίνακα.
📦 Δομή Παράλληλων Πινάκων
| Πίνακας | Ρόλος |
|---|---|
ΔΕΔ[100] |
Αποθηκεύει την τιμή του κόμβου |
ΕΠΟΜ[100] |
Δείκτης στον επόμενο κόμβο (θέση) |
ΑΡΧΗ |
Δείχνει στον πρώτο κόμβο |
ΕΛΕΥΘ |
Διαχειρίζεται τις κενές θέσεις |
📝 Εισαγωγή στην Αρχή & Διάσχιση
ΠΡΟΓΡΑΜΜΑ Συνδεδεμένη_Λίστα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΟΙ: ΔΕΔ[100], ΕΠΟΜ[100], ΑΡΧΗ, ΕΛΕΥΘ, τρέχων, νεα_θεση, τιμή
ΑΡΧΗ
! 1. Αρχικοποίηση
ΕΛΕΥΘ ← 0 ! Ο δείκτης ελεύθερης θέσης ξεκινά από το 0
ΑΡΧΗ ← 0 ! 0 σημαίνει κενή λίστα (NULL στην ΑΕΠΠ)
! 2. Εισαγωγή νέου κόμβου στην αρχή
ΑΝ ΕΛΕΥΘ < 100 ΤΟΤΕ ! Έλεγχος διαθεσιμότητας μνήμης
ΕΛΕΥΘ ← ΕΛΕΥΘ + 1 ! Δέσμευση επόμενης ελεύθερης θέσης
νεα_θεση ← ΕΛΕΥΘ
ΓΡΑΨΕ 'Δώσε τιμή νέου κόμβου:'
ΔΙΑΒΑΣΕ τιμή
ΔΕΔ[νεα_θεση] ← τιμή ! Αποθήκευση δεδομένων
ΕΠΟΜ[νεα_θεση] ← ΑΡΧΗ ! Ο νέος δείχνει στον τωρινό πρώτο (ή στο 0)
ΑΡΧΗ ← νεα_θεση ! Η κεφαλή δείχνει πλέον στον νέο κόμβο
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δεν υπάρχει διαθέσιμη μνήμη!'
ΤΕΛΟΣ_ΑΝ
! 3. Διάσχιση & εκτύπωση όλων των κόμβων
τρέχων ← ΑΡΧΗ
ΓΡΑΨΕ 'Στοιχεία λίστας:'
ΟΣΟ τρέχων <> 0 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ ΔΕΔ[τρεχων]
τρεχων ← ΕΠΟΜ[τρεχων] ! Μετάβαση στον επόμενο
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
✅ Πλεονεκτήματα: Δυναμικό μέγεθος, O(1) εισαγωγή/διαγραφή αν γνωρίζουμε θέση.
❌ Μειονεκτήματα: Σειριακή προσπέλαση, επιπλέον μνήμη για δείκτες, αδύνατη δυαδική αναζήτηση.
🌳 7. Δέντρα & Δυαδικά Δέντρα Αναζήτησης (BST)
Το δέντρο είναι μη γραμμική δομή με ρίζα, γονείς, παιδιά, φύλλα και υποδέντρα.
Το Δυαδικό Δέντρο Αναζήτησης (BST) έχει τον κανόνα:
Η αναζήτηση θυμίζει δυαδική αναζήτηση: κάθε σύγκριση αποκλείει το μισό δέντρο. Η ταχύτητα εξαρτάται από την ισορροπία του δέντρου.
📝 Αναζήτηση σε BST (Προσομοίωση σε ΓΛΩΣΣΑ)
ΠΡΟΓΡΑΜΜΑ Αναζήτηση_BST
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΟΙ: ΤΙΜΗ[100], ΑΡΙΣΤ[100], ΔΕΞΙ[100], ριζα, τρεχων, τιμη_αναζ, βρεθηκε
ΑΡΧΗ
ριζα ← 1 ! Υποθέτουμε ότι η ρίζα είναι στη θέση 1
τρεχων ← ριζα
βρεθηκε ← ΨΕΥΔΗΣ
ΓΡΑΨΕ 'Αναζήτηση τιμής:'
ΔΙΑΒΑΣΕ τιμη_αναζ
ΟΣΟ τρεχων <> 0 ΚΑΙ ΟΧΙ βρεθηκε ΕΠΑΝΑΛΑΒΕ
ΑΝ τιμη_αναζ = ΤΙΜΗ[τρεχων] ΤΟΤΕ
βρεθηκε ← ΑΛΗΘΗΣ
ΑΛΛΙΩΣ_ΑΝ τιμη_αναζ < ΤΙΜΗ[τρεχων] ΤΟΤΕ
τρεχων ← ΑΡΙΣΤ[τρεχων]
ΑΛΛΙΩΣ
τρεχων ← ΔΕΞΙ[τρεχων]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρεθηκε ΤΟΤΕ
ΓΡΑΨΕ 'Βρέθηκε στη θέση: ', τρεχων
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δεν βρέθηκε.'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
🌳 Εφαρμογές: Σύστημα αρχείων, λεξικά, compilers (syntax trees), decision trees, game AI.
🌐 8. Γράφοι: Η Πιο Γενική Δομή
Ο γράφος αποτελείται από κορυφές (κόμβους) και ακμές. Είναι η γενίκευση όλων των προηγούμενων δομών.
| Τύπος | Περιγραφή | Παράδειγμα |
|---|---|---|
| Μη κατευθυνόμενος | Ακμές αμφίδρομες | Facebook friendships |
| Κατευθυνόμενος | Ακμές μονόδρομες | Twitter follows, web links |
📝 Αναπαράσταση με Πίνακα Γειτνίασης (ΓΛΩΣΣΑ)
ΠΡΟΓΡΑΜΜΑ Γράφος_Πίνακας
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΟΙ: Γ[5,5], i, j
ΑΡΧΗ
! Αρχικοποίηση σε 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
Γ[i,j] ← 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Προσθήκη ακμών (μη κατευθυνόμενος)
Γ[1,2] ← 1
Γ[2,1] ← 1
Γ[2,3] ← 1
Γ[3,2] ← 1
ΓΡΑΨΕ 'Πίνακας γειτνίασης:'
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 5
ΓΡΑΨΕ Γ[i,j], ' '
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
💡 Σημαντική σημείωση για ΓΛΩΣΣΑ: Η ΓΛΩΣΣΑ υποστηρίζει δισδιάστατους πίνακες.
🌐 Εφαρμογές: Χάρτες/δρομολόγηση (Dijkstra, A*), δίκτυα, κοινωνικά γραφήματα, εξαρτήσεις έργων (PERT/CPM).
🧭 9. Πρακτικός Οδηγός Επιλογής Δομής (ΑΕΠΠ & Εξετάσεις)
| Πρόβλημα / Απαίτηση | Προτεινόμενη Δομή | Λόγος |
|---|---|---|
| Σταθερό πλήθος, τυχαία πρόσβαση, ταξινόμηση | Πίνακας | O(1) πρόσβαση, εύκολη υλοποίηση |
| Undo/Redo, αναδρομή, ισορροπία παρενθέσεων | Στοίβα | LIFO φύση |
| Εξυπηρέτηση με σειρά άφιξης, buffers | Ουρά | FIFO φύση |
| Συχνές εισαγωγές/διαγραφές, άγνωστο μέγεθος | Συνδεδεμένη Λίστα | Δυναμική, O(1) αλλαγές δείκτη |
| Ιεραρχία, γρήγορη αναζήτηση, λεξικά | BST / Δέντρο | O(log n) αναζήτηση (ισορροπημένο) |
| Δίκτυα, σχέσεις πολλών-προς-πολλούς | Γράφος | Γενικότερη δομή, μοντελοποίηση πραγματικότητας |
⚠️ Κανόνας Πανελληνίων: Η εκφώνηση συνήθως «προδίδει» τη δομή μέσω των πράξεων που ζητά.
- «εισαγωγή μόνο στην αρχή» → Στοίβα ή Λίστα
- «διατήρηση σειράς άφιξης» → Ουρά
- «γρήγορη εύρεση στοιχείου» → Πίνακας (μικρός) ή BST
- «συνδέσεις μεταξύ κόμβων» → Γράφος
💡 10. Tips για Πανελλήνιες & Εξετάσεις ΑΕΠΠ
- ✍️ Υλοποίησε από το μηδέν ουρά, στοίβα με έλεγχο ορίων και BST αναζήτηση.
- 🔍 Κάνε hand-trace (πίνακας + δείκτες βήμα-βήμα) για κάθε άσκηση. Είναι το μυστικό για τα θέματα 3 & 4.
- 📚 Μελέτησε θέματα 2015–2025 που αφορούν στοίβες/ουρές με παράλληλους πίνακες.
- 🌳 Προσομοίωσε δέντρα με 3 πίνακες (ΤΙΜΗ, ΑΡΙΣΤ, ΔΕΞΙ) και γράψε αναδρομική διάσχιση (προ-ενδο-μετα-διατεταγμένη).
- 💻 Μη φοβάσαι τον ψευδοκώδικα: Η ΓΛΩΣΣΑ είναι εργαλείο σκέψης. Αν καταλάβεις τη λογική, η μετάβαση σε Python/C++ είναι άμεση.
❓ 11. Συχνές Ερωτήσεις (FAQ)
🔹 Ποια δομή είναι πιο γρήγορη για αναζήτηση;
Ο πίνακας με δυαδική αναζήτηση (O(log n)) ή το ισορροπημένο BST (O(log n)). Ο πίνακας έχει ταχύτερη πρόσβαση αλλά απαιτεί ταξινόμηση.
🔹 Πότε χρησιμοποιούμε συνδεδεμένη λίστα αντί για πίνακα;
Όταν έχουμε συχνές εισαγωγές/διαγραφές και άγνωστο πλήθος στοιχείων. Σε πίνακα, οι εισαγωγές/διαγραφές απαιτούν μετακινήσεις O(n).
🔹 Μπορώ να υλοποιήσω αναδρομή στη ΓΛΩΣΣΑ;
Ναι! Η ΓΛΩΣΣΑ υποστηρίζει αναδρομικές συναρτήσεις. Χρησιμοποιείται συχνά σε αλγορίθμους δέντρων (π.χ. προδιατεταγμένη διάσχιση).
🔹 Πώς προσομοιώνω δείκτες στη ΓΛΩΣΣΑ;
Με ακέραιες μεταβλητές που κρατούν θέσεις πίνακα. Η τιμή 0 συμβολίζει το null (κανένας κόμβος).
🔹 Τι είναι η κυκλική ουρά και πότε χρησιμοποιείται;
Κυκλική ουρά είναι όταν το rear μετά το τέλος του πίνακα πάει στην αρχή (χρησιμοποιώντας mod). Χρησιμοποιείται για να αξιοποιηθεί πλήρως η μνήμη του πίνακα.
🏆 12. Συμπέρασμα
Οι δομές δεδομένων δεν είναι απλά «κεφάλαιο για το τεστ». Είναι ο αλγοριθμικός σου χάρτης.
Μόλις μάθεις να διαβάζεις ένα πρόβλημα και να το αντιστοιχίζεις στη σωστή δομή, η σκέψη σου θα αλλάξει ριζικά. Στην ΑΕΠΠ ίσως γράφεις λίγες παραπάνω γραμμές για τη διαχείριση δεικτών με πίνακες, αλλά αυτή η διαδικασία είναι που χτίζει τη διαίσθηση που θα σε ακολουθήσει σε κάθε γλώσσα προγραμματισμού.
🧪 13. Εξάσκηση & Exam Boost
✏️ Άσκηση 1: Έλεγχος Παρενθέσεων (Στοίβα)
Να ελέγξετε αν μια ακολουθία παρενθέσεων είναι σωστά τοποθετημένη.
ΠΡΟΓΡΑΜΜΑ Παρενθεσεις
ΜΕΤΑΒΛΗΤΕΣ
ΧΑΡΑΚΤΗΡΕΣ: s[100]
ΑΚΕΡΑΙΕΣ: top, i, n
ΑΡΧΗ
top ← 0
ΓΡΑΨΕ 'Δώσε πλήθος χαρακτήρων:'
ΔΙΑΒΑΣΕ n
ΓΡΑΨΕ 'Δώσε χαρακτήρες:'
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ n
ΔΙΑΒΑΣΕ s[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ n
ΑΝ s[i] = '(' ΤΟΤΕ
top ← top + 1
ΑΛΛΙΩΣ_ΑΝ s[i] = ')' ΤΟΤΕ
ΑΝ top = 0 ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΤΕΛΟΣ_ΑΝ
top ← top - 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ top = 0 ΤΟΤΕ
ΓΡΑΨΕ 'Σωστό'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Λάθος'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
✏️ Άσκηση 2: Ουρά Εξυπηρέτησης
Να προσομοιωθεί ουρά πελατών όπου γίνεται εισαγωγή και εξαγωγή.
front ← 0 rear ← 0 ! Εισαγωγή rear ← rear + 1 ΟΥ[rear] ← x ! Εξαγωγή ΑΝ front = rear ΤΟΤΕ front ← 0 rear ← 0 ΑΛΛΙΩΣ front ← front + 1 ΤΕΛΟΣ_ΑΝ
⚠️ Συχνές Παγίδες Πανελληνίων
- ❌ Ξεχνάς overflow / underflow
- ❌ Μπερδεύεις front και rear
- ❌ Νομίζεις ότι γίνεται πραγματική διαγραφή από πίνακα
- ❌ Δεν μηδενίζεις front/rear όταν αδειάζει η ουρά
- ❌ Ξεχνάς ότι στη στοίβα αλλάζει μόνο το top
📊 Cheat Sheet Δομών Δεδομένων
| Δομή | Λογική | Δείκτες | Χρήση |
|---|---|---|---|
| Στοίβα | LIFO | top | Undo |
| Ουρά | FIFO | front/rear | Εξυπηρέτηση |
| Λίστα | Δυναμική | δείκτες | Εισαγωγές |
| BST | Ταξινόμηση | αριστ/δεξί | Αναζήτηση |
| Γράφος | Γενικός | - | Δίκτυα |
🧠 Interactive Mini Quiz
1. Ποια δομή χρησιμοποιείται για recursion;
2. Τι σημαίνει overflow;
3. Πότε προτιμάμε συνδεδεμένη λίστα;
4. Τι δείχνει το rear;
5. Ποια δομή χρησιμοποιείται για δίκτυα;
📚 Διαβάστε επίσης:
📚 Σας άρεσε το άρθρο;
Μοιραστείτε το με συμμαθητές που προετοιμάζονται για ΑΕΠΠ!
#ΔομέςΔεδομένων #ΑΕΠΠ #ΓΛΩΣΣΑ #Στοίβα #Ουρά #ΣυνδεδεμένηΛίστα #Δέντρα #Γράφοι #Αλγόριθμοι #Πανελλήνιες
Δεν υπάρχουν σχόλια :
Δημοσίευση σχολίου