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



Σχετικά έγγραφα
ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασικές Δομές Δεδομένων

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

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

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

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

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

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

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

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

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

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

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης

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

Συλλογές, Στοίβες και Ουρές

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

Βασικές οµές εδοµένων

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

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

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012

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

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου

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

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

Standard Template Library (STL) C++ library

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

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

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

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

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

Στοίβες με Δυναμική Δέσμευση Μνήμης

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

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

ιαφάνειες παρουσίασης #11

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Δομές Δεδομένων Ενότητα 4


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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο. Πίνακες. Επικοινωνία:

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

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

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

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

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Κεφάλαια 2,7,8

7 ο ΓΕΛ Καλλιθέας Οδηγός Α.Ε.Π.Π. ΚΕΦΑΛΑΙΟ 3 ο

Διαδικασιακός Προγραμματισμός

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ ÊÁËÁÌÁÔÁ

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ Α.Ε.Π.Π. ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Γ ΛΥΚΕΙΟΥ Θέματα και Απαντήσεις

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

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

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

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

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ουρές Προτεραιότητας. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Οντοκεντρικός Προγραμματισμός

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

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

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

Αναζήτηση σε Γράφους. Μανόλης Κουμπαράκης. ΥΣ02 Τεχνητή Νοημοσύνη 1

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

4. Συνδεδεμένες Λίστες

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

ΠΑΝΕΛΛΗΝΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΤΑΡΤΗ 12 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

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

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

Transcript:

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται οι λειτουργίες ή οι πράξεις. Το μοντέλο αυτό ονομάζεται αφηρημένος τύπος δεδομένων. Η μεταφορά του αφηρημένου τύπου στον υπολογιστή (δηλαδή η υλοποίηση του μοντέλου αυτού) πραγματοποιείται με διάφορους τρόπους. Το τελικό αποτέλεσμα συνιστά τη δημιουργία μιας δομής δεδομένων στην οποία εισάγονται τα δεδομένα. Σε κάθε δομή δεδομένων, η επεξεργασία των στοιχείων γίνεται με βάση τις πράξεις που έχουν καθοριστεί από την αρχή, τότε δηλαδή που δημιουργήθηκε ο αντίστοιχος αφηρημένος τύπος δεδομένων. Οι δομές που θα μελετήσουμε στο κεφάλαιο αυτό είναι θεμελιώδεις και αποτελούν πρωταρχικό υλικό στη θεωρία των αλγορίθμων και του προγραμματισμού. Σε κάθε μία από αυτές περιγράφονται και υλοποιούνται οι σημαντικότερες από τις λειτουργίες τους, όπως είναι για παράδειγμα η εισαγωγή, η διαγραφή, η αναζήτηση, η ταξινόμηση, η εκτύπωση κ.α. Για τη δημιουργία μιας δομής δεδομένων χρησιμοποιούνται κυρίως δυο μέθοδοι. Η πρώτη μέθοδος χρησιμοποιεί τη δομή του πίνακα. Σύμφωνα με τα χαρακτηριστικά της δομής του πίνακα, τα στοιχεία εισάγονται και τοποθετούνται σε προκαθορισμένες διαδοχικές θέσεις. Συνεπώς δημιουργούνται στατικές δομές δεδομένων. Με τον όρο στατική δομή δεδομένων εννοούμε τη δομή το μέγεθος της οποίας καθορίζεται από την αρχή στο πρόγραμμα και όχι κατά τη διάρκεια της εκτέλεσης του. Η δεύτερη μέθοδος βασίζεται στη δημιουργία κόμβων με δυναμικό τρόπο, οι οποίοι συνδέονται μεταξύ τους. Αυτή η μέθοδος, δημιουργεί δυναμικές δομές δεδομένων. Με τον όρο δυναμική δομή δεδομένων εννοούμε μια δομή της οποίας το μέγεθος μεταβάλλεται ανάλογα με τα δεδομένα που εισάγονται ή διαγράφονται. Σε αυτό το σημείο αξίζει να σημειωθεί ότι τα δεδομένα δεν τοποθετούνται σε συνεχόμενες θέσεις μνήμης. Αναφέρουμε ως παραδείγματα τέτοιων δομών τη στοίβα, την ουρά και τα δένδρα. Η καταχώρηση των στοιχείων με τον τρόπο αυτό λέγεται και αλυσιδωτή καταχώρηση. Ανάλογα με το σχήμα της καταχώρησης που χρησιμοποιείται, ο προσδιορισμός της θέσης ενός στοιχείου ποικίλει. Στους πίνακες χρησιμοποιείται ένας αύξων αριθμός, ο οποίος ονομάζεται αριθμοδείκτης. Στις δυναμικές δομές χρησιμοποιούνται οι δείκτες (pointers) οι οποίοι αντιστοιχούν στις διευθύνσεις των κόμβων της δομής. Ο κόμβος είναι μια βασική μονάδα που χρησιμοποιείται για τη δημιουργία μιας δομής δεδομένων. Κάθε κόμβος περιέχει δεδομένα αλλά και πληροφορίες προς τους άλλους κόμβους. Οι πληροφορίες αυτές ονομάζονται δείκτες και είναι τα συνδετικά στοιχεία των κόμβων. Ένας δείκτης είναι η διεύθυνση του επόμενου κόμβου. Σε μη γραμμικές δομές όπως είναι τα δένδρα, έχουμε περισσότερα του ενός συνδετικά στοιχεία. Αυτά, είναι οι διευθύνσεις των συγγενικών κόμβων.

Γενικές παρατηρήσεις για τις δυναμικές γραμμές δεδομένων: Στις δυναμικές δομές, χρειάζεται να φυλάσσουμε ξεχωριστά τη διεύθυνση του πρώτου κόμβου (ή ενίοτε και του τελευταίου). Οι γραμμικές δομές δεδομένων που χρησιμοποιούνται στην κύρια μνήμη είναι ο πίνακας, η στοίβα, η ουρά και η λίστα. Στις δομές αυτές ορίζεται μια γραμμική σχέση διάταξης για δυο οποιαδήποτε διαδοχικά στοιχεία τους. Ουσιαστικά λοιπόν, οι δομές αυτές είναι μονοδιάστατες. Οι μη γραμμικές δομές δεδομένων χρησιμοποιούνται τόσο στην κύρια όσο και στη δευτερεύουσα μνήμη. Αυτές είναι τα δένδρα, ο σωρός και οι γράφοι. Οι σχέσεις των δεδομένων μεταξύ τους είναι σύνθετες και θα αναλυθούν εκτενέστερα στη συνέχεια. Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: Προσπέλαση (access): είναι η πρόσβαση σε έναν κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενό του. Εισαγωγή (insertion): είναι η προσθήκη ή δημιουργία νέων κόμβων σε μια υπάρχουσα δομή. Διαγραφή (deletion): είναι η αφαίρεση κόμβων από μια υπάρχουσα δομή. Αποτελεί την αντίστροφη πράξη της εισαγωγής. Αναζήτηση (searching): είναι η εξέταση ενός συνόλου στοιχείων προκειμένου να εντοπιστούν ένα ή περισσότερα στοιχεία τα οποία έχουν μια δεδομένη ιδιότητα. Μεταβολή ή τροποποίηση (modification) του περιεχομένου ενός κόμβου μιας δομής. Προσάρτηση (append): είναι η προσάρτηση μιας δομής στο τέλος μιας άλλης με ίδιας μορφής κόμβους. Ταξινόμηση (sorting): είναι η διάταξη των στοιχείων μιας δομής κατά αύξουσα ή φθίνουσα τάξη. Συγχώνευση (merging): είναι η συνένωση δυο ή περισσότερων δομών σε μια ενιαία δομή. Διαχωρισμός (separation): είναι η διάσπαση μιας δομής σε δυο ή περισσότερες. Αποτελεί την αντίστροφη πράξη της συγχώνευσης.

3.1 Η ΣΤΟΙΒΑ ΩΣ ΑΤΔ Η στοίβα είναι μια μορφή οργάνωσης που απαντάται συχνά στην καθημερινή μας ζωή. Ως ένα απλό παράδειγμα δημιουργίας μιας στοίβας αναφέρουμε την τοποθέτηση εγγράφων το ένα πάνω στο άλλο. Θεωρώντας ότι τα πιο πρόσφατα έγγραφα είναι και τα πιο χρήσιμα, το έγγραφο που τοποθετήθηκε τελευταίο στη στοίβα θα είναι και το πρώτο που θα ανασυρθεί από αυτή. Έτσι, ως στοίβα (stack) μπορεί να χαρακτηρισθεί μια δομή δεδομένων στην οποία τα νέα δεδομένα τοποθετούνται και ανασύρονται από την κορυφή της. Υλοποιεί τη λειτουργία LIFO (Last In First Out) κατά την οποία: το πρώτο στοιχείο που εξάγεται από τη δομή είναι το τελευταίο που εισήχθη σε αυτήν. Ένα σύνολο από διαδικασίες (πράξεις) καθορίζει τη διεπαφή σε κάθε ΑΤΔ. Οι κυριότερες από αυτές για τη στοίβα είναι οι εξής: push( ): Προσθέτει ένα στοιχείο στην κορυφή της στοίβας. pop( ): Εξάγει (απομακρύνει) το πιο πρόσφατο στοιχείο από την κορυφή της στοίβας. gettop( ): Επιστρέφει το στοιχείο που βρίσκεται στην κορυφή της στοίβας χωρίς όμως να το απομακρύνει. isempty( ): Καθορίζει αν η στοίβα είναι κενή, δηλαδή αν δεν περιέχει κανένα στοιχείο. Η πιο απλή δομή δεδομένων που μπορεί να χρησιμοποιηθεί για την αναπαράσταση του ΑΤΔ στοίβα είναι ο πίνακας, δεδομένου ότι η στοίβα είναι μια συλλογή στοιχείων του ίδιου τύπου με γραμμική διάταξη. Όμως, η στοίβα διαφέρει από τον πίνακα ως προς το γεγονός ότι το πλήθος των στοιχείων του πίνακα είναι πάντα σταθερό, ενώ στη στοίβα μπορεί να αλλάζει. Κατά τη διάρκεια της εκτέλεσης μιας οποιασδήποτε λειτουργίας, υπάρχει ένας ακέραιος αριθμός ο οποίος δείχνει την τρέχουσα θέση της κορυφής (top) της στοίβας μέσα στον πίνακα. Αυτό ακριβώς απεικονίζεται στο Σχήμα 3.1.α: PUSH POP? S[N-1] E D C B A Σχήμα 3.1.α S[4] S[3] S[2] S[1] S[0] TOP Όπως φαίνεται στο Σχήμα 3.1.α πρώτο εισέρχεται το στοιχείο Α, μετά το Β και στη συνέχεια C, D, E με τη σειρά.

3.2 Η ουρά ως ΑΤΔ Η ουρά (queue) είναι γνωστή έννοια στην καθημερινότητά μας. Για παράδειγμα, λέμε ότι «είμαστε στην ουρά» όταν περιμένουμε να μπούμε στο λεωφορείο, να πληρώσουμε στο ταμείο ενός καταστήματος ή να εξυπηρετηθούμε από έναν υπάλληλο στην τράπεζα. Η στιγμή της εξυπηρέτησής μας καθορίζεται σύμφωνα με την ώρα της άφιξής μας στη συγκεκριμένη θέση αναμονής. Πιο συγκεκριμένα σύμφωνα με τη στιγμή που τοποθετηθήκαμε στη σειρά μας. Στη βιβλιογραφία η ουρά (queue) προσδιορίζεται ειδικότερα ως ουρά αναμονής. Στον προγραμματισμό, η ουρά (queue) είναι μια δομή δεδομένων στην οποία τα στοιχεία της εξέρχονται με την ίδια σειρά με την οποία εισήχθησαν. Εξάγεται πάντα το πιο παλαιό στοιχείο χρονικά. Η ουρά μπορεί να θεωρηθεί ως μια σειρά με δύο άκρα: το εμπρός (front) και το πίσω (rear). Ακολουθεί δε, τη μέθοδο εξυπηρέτησης FCFS (First Come First Served) ή αλλιώς FIFO (First In First Out). Σύμφωνα με τη μέθοδο αυτή εξασφαλίζεται με απλό τρόπο μία σειρά δίκαιης εξυπηρέτησης για όλα τα στοιχεία. Είναι φανερό ότι κάθε φορά εξυπηρετείται το στοιχείο το οποίο εμφανίστηκε πρώτο στην ουρά και άρα έχει παραμείνει περισσότερο χρόνο από τα υπόλοιπα. Μια FIFO δομή δεδομένων συχνά χρησιμοποιείται σε μια ακολουθία πολλαπλών απαιτήσεων για τη διάθεση ενός πόρου. Μπορούμε να αναφερθούμε χαρακτηριστικά στην περίπτωση της λειτουργίας ενός κοινόχρηστου εκτυπωτή. Παράδειγμα: α) Ας υποθέσουμε ότι έχουμε μια ουρά στην οποία έχουμε εισάγει τα στοιχεία 55, 77, 64 και 32. Έτσι θα έχουμε το ακόλουθο Σχήμα 3.2.α. 55 77 64 32 front = 0 rear = 3 Σχήμα 3.2.α β) Αν υποθέσουμε ότι διαγράφονται δυο στοιχεία, τότε θα συμβεί αυτό που απεικονίζεται στο Σχήμα 3.2.β: : 64 32 Σχήμα 3.2.β front = 2 rear = 3

γ) Προσθέτοντας δυο νέα στοιχεία, το 88 και το 49, η ουρά θα τροποποιηθεί όπως δείχνει και το Σχήμα 3.2.γ. 64 32 88 49 Σχήμα 3.2.γ front = 2 rear = 5 Βασικές λειτουργίες της ουράς: Οι βασικές πράξεις της ουράς υλοποιούνται με τη βοήθεια των αντίστοιχων συναρτήσεων, οι οποίες είναι: add ( ): Προσθέτει ένα στοιχείο στο πίσω άκρο της ουράς. delete ( ): Απομακρύνει ένα στοιχείο από το εμπρός άκρο της ουράς. isfull ( ): Ελέγχει αν η ουρά είναι γεμάτη. isempty ( ): Ελέγχει αν η ουρά είναι κενή, δηλαδή αν δεν περιέχει κανένα στοιχείο. Θα αναφερθούμε διεξοδικότερα στην επόμενη ενότητα τις δυο πιο σημαντικές λειτουργίες της ουράς δηλαδή την εισαγωγή (add) και την εξαγωγή (delete) ενός στοιχείου.