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

Σχετικά έγγραφα
ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

8.6 Κλάσεις και αντικείμενα 8.7 Δείκτες σε γλώσσα μηχανής

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

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

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

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

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

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

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

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

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

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

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

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες

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

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

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

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

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

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

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

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

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

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

Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

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

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

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

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

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Εισαγωγή στην επιστήμη των υπολογιστών. Οργάνωση εδομένων Κεφάλαιο 11ο ομές εδομένων

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

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

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

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

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

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

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

Κεφάλαιο 6 Ουρές Προτεραιότητας


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

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΡΑΓΚΙΑΟΥΡΗΣ ΝΙΚΟΛΑΟΣ

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

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

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

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

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

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

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

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

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

Σύστηµα Αρχείων και Καταλόγων

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

Σύστημα Πλεονάσματος και Αναπαράσταση Αριθμών Κινητής Υποδιαστολής

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

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

Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας (γενικά, αλλά και στο QtSpim pim) Η χρησιµότητα της Στοίβας στους Μικροεπεξεργαστές Κλήση συνάρτ

Σύστημα Πλεονάσματος. Αναπαράσταση Πραγματικών Αριθμών. Αριθμητικές Πράξεις σε Αριθμούς Κινητής Υποδιαστολής

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

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

υαδικό έντρο Αναζήτησης (BSTree)

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

Τα µπιτ και η σηµασία τους. Σχήµα bit. ΚΕΦΑΛΑΙΟ 1: Αποθήκευση εδοµένων (1/2) 1.7 Αποθήκευση κλασµάτων 1.8 Συµπίεση δεδοµένων 1.9 Σφάλµατα επικοινωνίας

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

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

έντρα ιδάσκοντες:. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Δομές Δεδομένων. Ενότητα 13: B-Δέντρα/AVL-Δέντρα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων

Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

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

Δημιουργία Δυαδικών Δέντρων Αναζήτησης

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

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

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

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

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014

Transcript:

ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας 14, οδός Πατησίων 27 Φρύνη Βάρναλη οµηµένα δεδοµένα Ιωάννης Βρανάς 47 οδός Ζέας 27 Φρύνη Βάρναλη 14 οδός Σκουφά 56 Ιωσήφ Κούλης 98 Πατησίων 23 8.4 Προσαρµοσµένοι τύποι δεδοµένων 8.5 Κλάσεις και αντικείµενα 8.6 είκτες σε γλώσσα µηχανής 56 47, Ιωάννης Βρανάς Ιωσήφ Κούλης 23 Λογική σχέση οδός Σκουφά Φρύνη Βάρναλη 14 οδός... 98, Ιωάννης Βρανάς 47 οδός... Ιωσήφ Κούλης 98 οδός.. 1 2 Βασικές δοµές δεδοµένων Ορολογία λιστών Οµοιογενής πίνακας. Λίστα. Στοίβα. Ουρά. έντρο. Η λίστα είναι µία συλλογή δεδοµένων της οποίας οι καταχωρήσεις έχουν σειριακή διάταξη. Το ένα άκρο µίας λίστας ονοµάζεται αρχή (head) της λίστας, ενώ το άλλο άκρο τέλος (tail). τέλος λίστας Λίστα: a1, a2, a3,..., a89, nil 3 4

Ορολογία στοιβών Ορολογία ουρών Στοίβα είναι µία λίστα της οποίας οι καταχωρήσεις αφαιρούνται και εισάγονται µόνο από την αρχή. οµή LIFO (Last In, First Out). H αρχή µίας στοίβας ονοµάζεται κορυφή (top) της στοίβας, ενώ το τέλος ονοµάζεται βάση (base). Απώθηση (pop) ονοµάζεται η αφαίρεση µίας καταχώρησης από την κορυφή. Ώθηση (push) είναι η εισαγωγή µίας νέας καταχώρησης στην κορυφή. a1 a2 a3 Στοίβα Η ουρά είναι µία λίστα στην οποία οι καταχωρίσεις αφαιρούνται από την αρχή ενώ οι νέες καταχωρίσεις προστίθενται στο τέλος. οµή FIFO (First In, First Out). Είσοδος Ουρά: a1 a2 a3 Έξοδος 5 6 Ορολογία δέντρων Ορολογία δένδρων: κόµβοι Ένα δέντρο είναι µία οµάδα δεδοµένων της οποίας οι καταχωρίσεις έχουν µία ιεραρχική οργάνωση. Κόµβος (node) είναι η κάθε θέση σε ένα δέντρο. υαδικό δένδρο (binary tree) είναι ένα δένδρο στο οποίο κάθε κόµβος έχει µέχρι δύο θυγατρικούς κόµβους. Ως βάθος ορίζουµε το πλήθος των κόµβων που βρίσκονται στη µεγαλύτερη διαδροµή από τη ρίζα µέχρι ένα φύλλο. Κόµβος ρίζα είναι ο κόµβος στην κορυφή. Τερµατικός κόµβος ή φύλλο είναι ο κόµβος που βρίσκεται στο κάτω µέρος. Γονικός κόµβος (γονέας) ονοµάζεται ο αµέσως επάνω κόµβος ενός συγκεκριµένου κόµβου. Θυγατρικός κόµβος (παιδί) είναι ο αµέσως από κάτω κόµβος ενός συγκεκριµένου κόµβου. Πρόγονος είναι ο γονέας, ο γονέας του γονέα κτλ. Απόγονος είναι το παιδί, το παιδί του παιδιού κτλ. Αµφιθαλείς (ή κόµβοι αδέρφια) είναι δύο κόµβοι µε τους ίδιους γονείς. 7 8

Παράδειγµα οργανογράµµατος (Σχήµα 8.1) Ορολογία δέντρων (Σχήµα 8.2) 9 10 Η φύση των δοµών δεδοµένων Στατική είναι η δοµή της οποίας το µέγεθος δεν αλλάζει. υναµική είναι η δοµή της οποίας το µέγεθος µπορεί να αλλάξει. 8.2 Αποθήκευση οµοιογενών πινάκων Απαιτεί ένα επαρκές τµήµα από συνεχόµενα κελιά µνήµης για να αποθηκεύσει όλα τα δεδοµένα. ισδιάστατοι πίνακες ιάταξη κατά γραµµές όπου κάθε γραµµή του πίνακα αποθηκεύεται µαζί. Πολυώνυµο διεύθυνσης: A[r,c] = (r-1)(# columns) + (c-1) ιάταξη κατά στήλες στην οποία ο πίνακας αποθηκεύεται στήλη προς στήλη. Πίνακας (array): 2 γραµµές, 3 στήλες a11 a12 a13 a21 a22 a23 11 12

Αποθήκευση λιστών οµές δεδοµένων και µνήµη Συνεχόµενη λίστα είναι η λίστα που αποθηκεύεται σε έναν οµοιογενή πίνακα. Συνδεδεµένη λίστα είναι η λίστα στην οποία κάθε κόµβος δείχνει στον επόµενο του. είκτης αρχής είναι ο δείκτης που δείχνει στη αρχή, ή την κεφαλή, της λίστας. είκτης ΝΙL είναι ένα ειδικό σχήµα bit που τοποθετείται στο κελί δείκτη της τελευταίας καταχώρισης για να προσδιορίσει ότι δεν υπάρχουν άλλες καταχωρίσεις στη λίστα. 0 1 2 3 1022 1023 a 1010001000010011 N-1 µνήµη = αριθµηµένα κελιά Βασικές έννοιες: διεύθυνση, περιεχόµενο µνήµη b ακέραιος µεγέθους Κ bits διεύθυνση περιεχόµενο 13 14 Μυθιστορήµατα ταξινοµηµένα κατά τίτλο, αλλά συνδεδεµένα σύµφωνα µε τον συγγραφέα (Σχήµα 8.3) Αποθήκευση του πίνακα ενδείξεων θερµοκρασίας στη µνήµη µε αρχήτηδιεύθυνσηχ (Σχήµα 8.4) 15 16

Ένας δισδιάστατος πίνακας µε τέσσερις γραµµές και πέντε στήλες, αποθηκευµένες µε διάταξη γραµµές (Σχήµα 8.5) Ονόµατα αποθηκευµένα στη µνήµη µε τη µορφή συνεχόµενης λίστας (Σχήµα 8.6) 17 18 Ηδοµή µιας συνδεδεµένης λίστας (Σχήµα 8.7) ιαγραφή καταχώρισης από συνδεδεµένη λίστα (Σχήµα 8.8) 19 20

Προσθήκη καταχώρισης σε συνδεδεµένη λίστα (Σχήµα 8.9) Αποθήκευση στοιβών και ουρών Μπορεί να χρησιµοποιήσει παρόµοιους µηχανισµούς µε την αποθήκευση λιστών. Η κυκλική ουρά είναι ένας οµογενής πίνακας όπου η πρώτη καταχώριση στον πίνακα συµπεριφέρεται σαν να είναι η αµέσως επόµενη της τελευταίας καταχώρισης. Προστατεύει την ουρά από το να γλιστράει εκτός του τµήµατος µνήµης που έχει δεσµευτεί για αυτή. 21 22 Μία στοίβα στη µνήµη (Σχήµα 8.10) Μια υλοποίηση ουράς µε δείκτες αρχής και τέλους. Παρατηρήστε το πώς «γλιστράει» στη µνήµη η ουρά καθώς προστίθενται και αφαιρούνται καταχωρίσεις (Σχήµα 8.11) 23 24

Αποθήκευση δυαδικών δένδρων Ηδοµή ενόςκόµβου σε ένα δυαδικό δέντρο (Σχήµα 8.12) Συνδεδεµένη δοµή. Κάθε κόµβος περιέχει τα κελιά που περιέχουν τα δεδοµένα και δύο θυγατρικούς δείκτες Αντιστοιχίζεται σε έναν συνεχόµενο πίνακα. Α[1]= κόµβος ρίζα Α[2],Α[3]=θυγατρικού κόµβοι του Α[1] Α[4],Α[5],Α[6],Α[7]=θυγατρικοί κόµβοι των Α[2] και Α[3].. 25 26 Ησχηµατικήκαιηπραγµατική οργάνωση ενός δυαδικού δέντρου µε τη χρήση ενός συστήµατος αποθήκευσης συνδέσεων (Σχήµα 8.13) Ένα δέντρο που έχει αποθηκευτεί χωρίς δείκτες (Σχήµα 8.14) 27 28

Ησχηµατική αναπαράσταση ενός αραιού, µη ισορροπηµένου δέντρου, και ο τρόπος που θα αποθηκευόταν χωρίς δείκτες (Σχήµα 8.15) Χειρισµός δοµών δεδοµένων Ιδανικά, µία δοµή δεδοµένων θα έπρεπε να χειριζόταν µόνο από προκαθορισµένες διαδικασίες. Παράδειγµα:Μία στοίβα συνήθως χρειάζεται τουλάχιστον τις διαδικασίες ώθησης και απώθησης. Η δοµή δεδοµένων µαζί µε αυτές τις διαδικασίες αποτελεί ένα ολοκληρωµένο αφηρηµένο εργαλείο. 29 30 Μια διαδικασία για την εκτύπωση µιας συνδεδεµένης λίστας (Σχήµα 8.16) Τα γράµµατα Α έως Ν µε τηµορφή διατεταγµένου δέντρου (Σχήµα 8.17) διαδικασία PrintList(Λίστα) Τρέχων είκτης δείκτηςκεφαλήςτηςλίστας όσο (Τρέχων είκτης διάφορος του NIL) κάνε (Τύπωσε το όνοµα της καταχώρισης στην οποία δείχνει ο Τρέχων είκτης. Βρες την τιµή στο κελί δείκτη της καταχώρισης της Λίστας όπου δείχνει ο Τρέχων είκτης και ανάθεσε εκ νέου τον Τρέχοντα είκτη την τιµή αυτή.) 31 32

Η δυαδική αναζήτηση µε τηµορφή που θα είχε αν η λίστα είχε υλοποιηθεί ως συνδεδεµένο δυαδικό κέντρο (Σχήµα 8.18) Τα προοδευτικά µικρότερα δέντρα που θα ερευνήσει η διαδικασία του Σχήµατος 8.18 κατά την αναζήτηση του γράµµατος Κ (Σχήµα 8.19) διαδικασία Αναζήτηση ( έντρο, ΤιµήΣτόχος) αν (δείκτης ρίζας έντρου = NIL) τότε (δήλωσε την αναζήτηση ως ανεπιτυχή) αλλιώς (εκτέλεσε το τµήµα των παρακάτω εντολών που σχετίζεται µε την κατάλληλη περίπτωση) περίπτωση 1: ΤιµήΣτόχος=τιµή κόµβου ρίζας (Ανάφερε ότι η αναζήτηση πέτυχε) περίπτωση 2: ΤιµήΣτόχος<τιµή κόµβου ρίζας (Εφάρµοσε τη διαδικασία Αναζήτησης για να δεις αν η ΤιµήΣτόχος βρίσκεται στο υποδέντρο που προσδιορίζεται από τον αριστερό θυγατρικό κόµβο της ρίζας, και ανάφερε το αποτέλεσµα αυτής της αναζήτησης) περίτπωση 3: ΤιµηΣτόχος> τιµή κόµβου ρίζας (Εφάρµοσε τη διαδικασία Αναζήτησης για να δεις αν η ΤιµήΣτόχος βρίσκεται στο υποδέντρο που προσδιορίζεται από τον δεξιό θυγατρικό κόµβο της ρίζας, και ανάφερε το αποτέλεσµα αυτής της αναζήτησης) ) τέλος αν 33 34 Εκτύπωση ενός δέντρου αναζήτησης σε αλφαβητική σειρά (Σχήµα 8.20) Μια διαδικασία για την εκτύπωση των δεδοµένων ενός δυαδικού δέντρου (Σχήµα 8.21) διαδικασία Εκτύπωση_ έντρου ( έντρο) αν ( έντρο όχι άδειο) τότε (Εφάρµοσε τη διαδικασία Εκτύπωση_ έντρου στο δέντρο που εµφανίζεται ως αριστερός κλάδος του έντρου Τύπωσε το ριζικό κόµβο του έντρου. Εφάρµοσε τη διαδικασία Εκτύπωση_ έντρου στο δέντρο που εµφανίζεται ως δεξιός κλάδος του έντρου) 35 36

Εισαγωγή της καταχώρισης Ν στη λίστα Β,Ε,Η,Θ,Κ,Λ,Ο,Ρ που έχει αποθηκευτεί ως δέντρο (Σχήµα 8.22) Μια διαδικασία για την εισαγωγή µιαςνέαςκαταχώρισηςσεµία λίστα που είναι αποθηκευµένη ως δυαδικό δέντρο (Σχήµα 8.23) διαδικασία Εισαγωγή ( έντρο, ΝέαΤιµή) αν (δείκτης ρίζα έντρου = NIL) (όρισε το δείκτη ρίζας ώστε να δείχνει σε ένα νέο φύλλο που περιέχει τη ΝέαΤιµή) αλλιώς (εκτέλεσε το τµήµα των εντολών παρακάτω που σχετίζεται µε την κατάλληλη περίπτωση) περίπτωση 1: ΝέαΤιµή = τιµή ριζικού κόµβου (Μην κάνεις τίποτα) περίπτωση 2: ΝέαΤιµή < τιµή ριζικού κόµβου (αν (αριστερός θυγατρικός δείκτης του ριζικού κόµβου = NIL) τότε (όρισε το δείκτη αυτόν ώστε να δείχνει σε ένα νέο κόµβο φύλλο που περιέχει τη ΝέαΤιµή) αλλιώς (εφάρµοσε τη διαδικασία Εισαγωγή για την εισαγωγή της ΝέαςΤιµής στο υποδέντρο που προσδιορίζεται από τον αριστερό θυγατρικό δείκτη) περίπτωση 3:ΝέαΤιµή < τιµή ριζικού κόµβου (αν (δεξιός θυγατρικός δείκτης του ριζικού κόµβου = NIL) τότε (όρισε το δείκτη αυτόν ώστε να δείχνει σε ένα νέο κόµβο φύλλο που περιέχει τη ΝέαΤιµή) αλλιώς (εφάρµοσε τη διαδικασία Εισαγωγή για την εισαγωγή της ΝέαςΤιµής στο υποδέντρο που προσδιορίζεται από τον δεξιό θυγατρικό δείκτη) ) ) τέλος αν 37 38 8.4 Μια στοίβα ακεραίων υλοποιηµένη σε Java και C# (Σχήµα 8.24) 8.5 Προσαρµοσµένοι τύποι δεδοµένων Τύποι δεδοµένων οριζόµενοι από το χρήστη αποτελούν ένα πρότυπο για µία ετερογενή δοµή. Αφηρηµένοι τύποι δεδοµένων είναι ορισµένοι από το χρήστη τύποι δεδοµένων που περιέχουν ορισµούς λειτουργιών και πράξεων. Κλάση αφηρηµένοι τύποι δεδοµένων µε επιπλέον χαρακτηριστικά. τα χαρακτηριστικά µπορούν να κληρονοµηθούν. τα συστατικά στοιχεία µπορούν να ενθυλακωθούν. µέθοδοι κατασκευής που προσαρµόζουν τα αντικείµενα όταν δηµιουργούνται. 39 40

8.6 είκτες σε γλώσσα µηχανής Ηπρώτηµας προσπάθεια να επεκτείνουµε τηγλώσσαµηχανής του Παραρτήµατος Γ ώστε να εκµεταλλεύεται τους δείκτες (Σχήµα 8.25) Απευθείας διευθυνσιοδότηση όπου η εντολή περιέχει τα δεδοµένα όπως απαιτεί ο κώδικας λειτουργίας. Άµεση διευθυνσιοδότηση όπου η εντολή περιέχει τη διεύθυνση των σχετικών δεδοµένων. Έµµεση διευθυνσιοδότηση όπου η εντολή περιέχει τη θέση της διεύθυνσης των σχετικών δεδοµένων. 41 42 Φόρτωση καταχωρητή από ένα κελί µνήµης το οποίο εντοπίζεται µέσω ενός δείκτη αποθηκευµένου σε κάποιο καταχωρητή (Σχήµα 8.26) 43