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

Σχετικά έγγραφα
Επιµέλεια Θοδωρής Πιερράτος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων. Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο. Φυσικό Επίπεδο RAM. Ταξινομημένος.

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

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

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

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

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

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

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

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

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

7. Στις στατικές δοµές δεδοµένων, το ακριβές µέγεθος της απαιτούµενης µνήµης καθορίζεται

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

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

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

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

Β. Να εξηγήσετε τι σηµαίνει ολίσθηση ενός δυαδικού αριθµού 3 θέσεις αριστερά µπορεί να είναι: Α: ουρά Β:στοίβα Γ:και τα δυο :τίποτα

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

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

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

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

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

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

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

Πίνακες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

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

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

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

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

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

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

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

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

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

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

ΕΚΠΑΙΔΕΥΤΗΡΙΑ ΝΕΑ ΠΑΙΔΕΙΑ

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

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

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

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

Ταξινόμηση. Ταξινόμηση ευθείας ανταλλαγής (Φυσαλίδα) 1) Να ταξινομηθεί ο πίνακας Α[Ν] σε αύξουσα σειρά με τη μέθοδο της φυσαλίδας.

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

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

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

ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ. ΘΕΜΑ 1 Δίνεται το παρακάτω τμήμα δηλώσεων ενός προγράμματος σε «ΓΛΩΣΣΑ»: ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Π[10] ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ ΑΚΕΡΑΙΕΣ: i

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

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

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

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

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

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

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

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

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

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

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

Παράδειγμα 1. Υπολογισμός μέγιστου ποσού

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΜΟΝΟ ΝΕΟ ΣΥΣΤΗΜΑ Γ ΗΜΕΡΗΣΙΩΝ

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

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

ΑΠΑΝΤΗΣΕΙΣ. Επιµέλεια: Οµάδα Πληροφορικής της Ώθησης

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

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2015 Β ΦΑΣΗ ÁÈÇÍÁ ΑΠΑΝΤΗΣΕΙΣ

Ταξινόμηση. Ταξινόμηση ευθείας ανταλλαγής (Φυσαλίδα) 1) Να ταξινομηθεί ο πίνακας Α[Ν] σε αύξουσα σειρά με τη μέθοδο της φυσαλίδας.

III. Πως μετατρέπεται το πηγαίο πρόγραμμα σε εκτελέσιμο πρόγραμμα;

Πρόβλημα 37 / σελίδα 207

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

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015

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

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

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

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

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

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

μεταβλητής Χ Χ ΑΛΗΘΗΣ Χ Χ 7 > 4 Χ ΨΕΥ ΗΣ Μονάδες 10

Transcript:

27 ΚΕΦΑΛΑΙΟ 3 Ο ΟΜΕΣ Ε ΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΕΡΙΕΧΟΜΕΝΑ Η έννοια της δοµής δεδοµένων Βασικές λειτουργίες επί των δοµών δεδοµένων Κατηγορίες δοµών δεδοµένων Πίνακες Στοίβες Ουρές Αρχεία Λίστες ένδρα - Γράφοι

Κεφ3ο οµές δεδοµένων και αλγόριθµοι 19 Η έννοια της δοµής δεδοµένων. Είναι ένα σύνολο αποθηκευµένων (στην κύρια ή στη δευτερεύουσα µνήµη) δεδοµένων (όχι τυχαία αλλά οργανωµένων συστηµατικά) που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Μια δοµή δεδοµένων χαρακτηρίζεται ως πολυµεταβλητή, γιατί σε αντίθεση µε µια µεταβλητή που µπορεί να περιέχει µόνο µια τιµή, η δοµή δεδοµένων µπορεί να περιέχει περισσότερες τιµές. Κάθε µορφή δοµής δεδοµένων αποτελείται από ένα σύνολο κόµβων nodes. Κάθε κόµβος περιέχει µια απλή τιµή (π.χ. αριθµός, αλφαριθµητικό κτλ.) ή µια ποιο σύνθετη τιµή (π.χ. εγγραφή = µια οµάδα τιµών διαφορετικού τύπου σχετικά µε ένα αντικείµενο). π.χ. η παρακάτω δοµή αποτελείται από 4 κόµβους που καθένας περιέχει ένα ακέραιο αριθµό. 75-34 61 18 π.χ. η παρακάτω δοµή αποτελείται από 3 κόµβους. Κάθε κόµβος περιέχει από µία εγγραφή.κάθε εγγραφή περιέχει το όνοµα, το επίθετο, το έτος γέννησης και το τµήµα ενός µαθητή Γιώργος Γεωργίου 1993 Γ2 Νίκος Νίκου 1992 Γ1 Παύλος Παύλου 1994 Γ1 Βασικές λειτουργίες (πράξεις) επί των δοµών δεδοµένων. Προσπέλαση (access) Εισαγωγή (insertion) ιαγραφή (deletion) Αναζήτηση (searching) Ταξινόµηση (sorting) Αντιγραφή (copying) Συγχώνευση (merging) Πρόσβαση σε ένα κόµβο µε σκοπό την ανάγνωση ή την τροποποίηση του περιεχοµένου του. Προσθήκη νέου κόµβου στη δοµή. Αφαίρεση ενός κόµβου από τη δοµή (αντίθετο της εισαγωγής) Προσπελαύνονται οι κόµβοι µιας δοµής, προκειµένου να εντοπιστούν ένας ή περισσότεροι που έχουν µια δεδοµένη ιδιότητα. ιατάσουµε τους κόµβους µιας δοµής κατά αύξουσα ή φθίνουσα σειρά. Όλοι ή µερικοί κόµβοι µιας δοµής αντιγράφονται σε µια άλλη δοµή. ύο ή περισσότερες δοµές συνενώνονται σε µία. ιαχωρισµός Μια δοµή διασπάται σε δύο ή περισσότερες (αντίστροφο της συγχώνευσης). (separation) Στη πράξη σπάνια χρησιµοποιούνται και οι 8 λειτουργίες για µια δοµή. Μια δοµή δεδοµένων είναι αποδοτικότερη από µια άλλη δοµή µε κριτήριο κάποια λειτουργία (π.χ. την αναζήτηση), αλλά λιγότερο αποδοτική για κάποια άλλη λειτουργία (π.χ. την εισαγωγή). Αυτό εξηγεί: (1 ον ) την ύπαρξη διαφορετικών δοµών δεδοµένων και (2 ον ) τη σπουδαιότητα της επιλογής της κατάλληλης δοµής µε βάση το πρόβληµα που αντιµετωπίζουµε. Για κάθε λειτουργία δηµιουργείται ένας αλγόριθµος. Αρκετές φορές υπάρχουν διαφορετικοί αλγόριθµοι που υλοποιούν µια συγκεκριµένη λειτουργία (π.χ. υπάρχουν αρκετοί αλγόριθµοί για τη ταξινόµηση). Όταν συµβαίνει αυτό επιλέγουµε τον αλγόριθµο που είναι πιο αποδοτικός (π.χ. πιο γρήγορος) για τα συγκριµένα δεδοµένα.. Υπάρχει δηλαδή, µεγάλη εξάρτηση µεταξύ της δοµής δεδοµένων και του αλγόριθµου που επεξεργάζεται τη δοµή. ΑΛΓΟΡΙΘΜΟΙ + ΟΜΕΣ Ε ΟΜΕΝΩΝ = ΠΡΟΓΡΑΜΜΑΤΑ

29 AΕσΠΠ Κατηγορίες δοµών δεδοµένων. Στατικές δοµές δεδοµένων 1. Το µέγεθος τους (ο αριθµός των κόµβων τους) είναι σταθερός κατά την διάρκεια εκτέλεσης του προγράµµατος. Το ακριβές µέγεθος της κύριας µνήµης καθορίζεται κατά την στιγµή του προγραµµατισµού τους και κατά συνέπεια της στιγµή της µετάφρασης και όχι τη στιγµή της εκτέλεσης του προγράµµατος. 2. Οι κόµβοι αποθηκεύονται σε συνεχόµενες θέσεις µνήµης. Πίνακες υναµικές δοµές δεδοµένων 1. Το µέγεθός τους (ο αριθµός των κόµβων τους) δεν είναι σταθερό και µεταβάλλεται κατά την διάρκεια εκτέλεσης του προγράµµατος µε την εισαγωγή νέων κόµβων ή την διαγραφή υπαρχόντων κόµβων 2. Οι κόµβοι δεν αποθηκεύονται σε συνεχόµενες θέσεις µνήµης, αλλά στηρίζονται στη τεχνική της λεγόµενης δυναµικής παραχώρησης µνήµης. Τι είναι ο πίνακας. Είναι µια στατική δοµή (περιέχει δηλαδή, ένα σταθερό σύνολο από κόµβους) που περιέχει στοιχεία του ίδιου τύπου (δηλαδή ακέραιοι, πραγµατικοί κτλ.) Είδη πινάκων. 1. Μονοδιάστατοι πίνακες (µιας γραµµής ή µιας στήλης). πίνακας ακεραίων 5 κόµβων (θέσεων, κελιών, στοιχείων) ΠΙΝ 13-27 8 46-19 1 2 3 4 5 πίνακας χαρακτήρων 4 κόµβων (θέσεων, κελιών, στοιχείων) Π Μαρία Θωμάς Χ1 31100 1 2 3 4 Το όνοµα του πίνακα Μια τιµή του πίνακα Ο δείκτης του πίνακα Ο πίνακας έχει µοναδικό όνοµα, το οποίο δίνει ο προγραµµατιστής (το όνοµα ακολουθεί τους κανόνες που είδαµε στην ονοµατολογία των µεταβλητών). Για να αναφερθούµε στο περιεχόµενο (τιµή) ενός κόµβου χρησιµοποιούµε το όνοµα του πίνακα και τον δείκτη (αριθµό θέσης) του κόµβου, δηλαδή ΟΝΟΜΑ [ ΕΙΚΤΗΣ]. πχ. ΠΙΝ[3] = το περιεχόµενο του 3 ου κόµβου του πίνακα ΠΙΝ = 8. Π[1] = το περιεχόµενο του 1 ου κόµβου του πίνακα Π = Μαρία. 2. ισδιάστατοι πίνακες (πολλών γραµµών και στηλών) πίνακας ακεραίων 3 γραµµών και 5 στηλών Το όνοµα του πίνακα Ο δείκτης της γραµµής ΠΙΝ 1 2 3 4 5 1 Π[1,1] Π[1,2] Π[1,3] Π[1,4] Π[1,5] 2 Π[2,1] Π[2,2] Π[2,3] Π[2,4] Π[2,5] 3 Π[3,1] Π[3,2] Π[3,3] Π[3,4] Π[3,5] Μια τιµή του πίνακα Ο δείκτης της στήλης Η αναφορά στο περιεχόµενο ενός κόµβου γίνεται µε χρήση του ονόµατος του πίνακα και τους δείκτες της γραµµής και της στήλης δηλαδή: όνοµα[δείκτης γραµµής, δείκτης στήλης]. πχ ΠΙΝ[1,3] =το περιεχόµενο του κόµβου που βρίσκεται στην 1 η γραµµή και 3 η στήλη. ΠΙΝ[3,1] =το περιεχόµενο του κόµβου που βρίσκεται στην 3 η γραµµή και 1 η στήλη.

Κεφ3ο οµές δεδοµένων και αλγόριθµοι 21 3. `Τετραγωνικοί πίνακες (Ειδική κατηγορία δισδιάστατων πινάκων) Είναι δισδιάστατοι πίνακες µε ίσο πλήθος γραµµών και στηλών. Συµβ.: πίνακας n X n. π.χ. τετραγωνικός πίνακας 5 Χ 5 Α 1 2 3 4 5 1 Α[1,1] Α[1,2] Α[1,3] Α[1,4] Α[1,5] 2 Α[2,1] Α[2,2] Α[2,3] Α[2,4] Α[2,5] 3 Α[3,1] Α[3,2] Α[3,3] Α[3,4] Α[3,5] 4 Α[4,1] Α[4,2] Α[4,3] Α[4,4] Α[4,5] 5 Α[5,1] Α[5,2] Α[5,3] Α[5,4] Α[5,5] Χαρακτηριστικά τετραγωνικού πίνακα Η κύρια διαγώνιος αποτελείται από τα στοιχεία µε ίδιο δείκτη γραµµής και στήλης,(i = j) δηλαδή, από τα Α[1,1], Α[2,2], Α[3,3], Α[4,4], Α[5,5]. Η δευτερεύουσα διαγώνιος αποτελείται από τα στοιχεία µε άθροισµα δεικτών = n+1 (i + j = n +1) δηλαδή από τα Α[1,5], Α[2,4], Α[3,3], Α[4,2], Α[5,1]. Τα στοιχεία πάνω από την κύρια διαγώνιο έχουν δείκτη γραµµής < δείκτη στήλης, δηλαδή είναι τα: Α[1,2],Α[1,3],Α[1,4],Α[1,5]-Α[2,3],Α[2,4],Α[2,5] Α[3,4], Α[3,5]-Α[4,5]. Τα στοιχεία κάτω από την κύρια διαγώνιο έχουν δείκτη γραµµής > δείκτη στήλης, δηλαδή είναι τα: Α[2,1]-Α[3,1],Α[3,2]-Α[4,1],Α[4,2],Α[4,3]-Α[5,1],Α[5,2], Α[5,3], Α[5,4] Τυπικές επεξεργασίες σε ένα µονοδιάστατο πίνακα Σε όλα τα παρακάτω θεωρούµε τον µονοδιάστατο πίνακα ακεραίων Π µε Ν στοιχεία 1. ιάβασµα των στοιχείων στον πίνακα. Αλγόριθµος ιάβασµα_στοιχείων Εµφάνισε Δώσε το στοιχείο, i ιάβασε Π[i] Τέλος ιάβασµα_στοιχείων 2. Εµφάνιση των στοιχείων του πίνακα Π. Αλγόριθµος Εµφάνιση_στοιχείων Εµφάνισε Π[, i, ]=, Π[i] Τέλος Εµφάνιση_στοιχείων 3. Άθροισµα των στοιχείων του πίνακα Π. Αλγόριθµος Άθροισµα_στοιχείων Sum 0 Sum Sum + Π[i] Εµφάνισε Το άθροισμα είναι:, Sum Τέλος Άθροισµα_στοιχείων 4. Μέσος Όρος των στοιχείων του πίνακα. Αλγόριθµος ΜΟ_στοιχείων Sum 0 Sum Sum + Π[i] ΜΟ Sum / N Εµφάνισε Μ.Ο. =, ΜΟ Τέλος ΜΟ_στοιχείων 5. Υπολογισµός του πλήθους των στοιχείων του πίνακα που ικανοποιούν µια ιδιότητα Κ. Αλγόριθµος Πλήθος_στοιχείων πλ 0 Αν Π[i] «ικανοποιεί την ιδιότητα Κ» τότε πλ πλ + 1 Εµφάνισε Το πλήθος είναι:, πλ Τέλος Πλήθος_στοιχείων

29 AΕσΠΠ 6. Εύρεση µεγίστου του πίνακα Αλγόριθµος Μax_στοιχείων max Π[1] Για i από 2 µέχρι Ν Αν Π[i] > max τότε max Π[i] Εµφάνισε Το μέγιστο είναι το:, max Τέλος Μax_στοιχείων Παρατήρηση 1η: Για την εύρεση του ελαχίστου (min) το µόνο που αλλάζει είναι η συνθήκη που γίνεται: Π[i] < min. Παρατήρηση 2η. Αν το µέγιστο στοιχείο του πίνακα υπάρχει σε πολλές θέσεις τότε: 7. Εύρεση µέγιστου και θέσης µεγίστου. Αλγόριθµος Μax_Θέση_στοιχείων max Π[1] θmax 1 Για i από 2 µέχρι Ν Αν Π[i] > max τότε max Π[i] θmax i Εµφάνισε Μέγιστο =, max Εµφάνισε στη θέση:, θmax Τέλος Μax_Θέση_στοιχείων i. Ο παραπάνω αλγόριθµος εντοπίζει την πρώτη θέση στην οποία εντοπίζεται. ii. Για να εντοπίσουµε την τελευταία θέση τότε το µόνο που αλλάζουµε είναι τη συνθήκη προσθέτοντας και το ίσον (=), δηλαδή, Π[i] >= max. Εναλλακτική λύση εντοπισµού της τελευταίας θέσης είναι: Να χρησιµοποιήσουµε τον παραπάνω αλγόριθµο σαρώνοντας τον πίνακα ανάποδα δηλαδή, από το τέλος προς την αρχή. Η εντολή επανάληψης διαµορφώνεται: max Π[Ν] θmax Ν Για i από Ν-1 µέχρι 1 iii. Για να εµφανίσουµε όλες τις θέσεις στις οποίες εµφανίζεται το µέγιστο στοιχείο θα πρέπει να συνδυάσουµε: (1 ον ) τον αλγόριθµο 6 για να βρούµε το µέγιστο και (2 ον ) τον αλγόριθµο 5 για να εντοπίσουµε τις θέσεις που υπάρχει το µέγιστο. Ο αλγόριθµος θα είναι ο εξής: Αλγόριθµος Μax_ΘέσειςMax! Αρχικά βρίσκουµε το µέγιστο max max Π[1] Για i από 2 µέχρι Ν Αν Π[i] > max τότε max Π[i]! Αµέσως µετά εντοπίζουµε τις θέσεις Αν Π[i] = max τότε Εµφάνισε θέση:, i Τέλος Μax_ΘέσειςMax iv. Ανάλογα ισχύουν και για τον εντοπισµό της θέσης ή των θέσεων του ελαχίστου (min)

Κεφ3ο οµές δεδοµένων και αλγόριθµοι 23 8. Αναζήτηση του στοιχείου key στον πίνακα Π. Υπάρχουν περισσότεροι του ενός αλγόριθµοι αναζήτησης. Εµείς θα µάθουµε Αλγόριθµος Σειριακή_Αναζήτηση τον αλγόριθµο της σειριακής ή γραµµικής εδοµένα//n, Π, key// αναζήτησης. εύρηκα ψευδής Η σειριακή µέθοδος αναζήτησης είναι η πιο απλή αλλά και λιγότερο θ 0 αποτελεσµατική µέθοδος αναζήτησης. i 1 ικαιολογείται η χρήση της στις Όσο (i <=Ν) και (εύρηκα = ψευδής) επανάλαβε περιπτώσεις όπου: Αν Π[i] = key τότε Ο πίνακας δεν είναι ταξινοµηµένος θ i Ο πίνακας είναι µικρού µεγέθους (n 20) εύρηκα αληθής Η αναζήτηση στον πίνακα γίνεται αλλιώς σπάνια. ii+1 Η λογική αυτής της µεθόδου είναι η εξής: Σαρώνουµε τον πίνακα και εξετάζουµε σε κάθε θέση αν το στοιχείο της θέσης είναι ίσο µε αυτό που αναζητάµε. Αν ναι, Αν εύρηκα = αληθής τότε σταµατάµε. Εµφάνισε Το,key, βρέθηκε στη θέση:, θ Θα χρειαστούµε µια λογικού τύπου Αλλιώς µεταβλητή την εύρηκα η οποία θα γίνει Εµφάνισε Το,key, δεν υπάρχει ΑΛΗΘΗΣ αν το στοιχείο βρεθεί. Επίσης µια ακέραια µεταβλητή την θ στην οποία θα εκχωρήσουµε την θέση στην οποία βρέθηκε Τέλος Σειριακή_Αναζήτηση το στοιχείο. Εάν ο πίνακας είναι ταξινοµηµένος τότε χρησιµοποιείται µια σαφώς πιο αποδοτικότερη µέθοδος η οποία λέγεται µέθοδος δυαδικής αναζήτησης 9. Ταξινόµηση του πίνακα Π. Υπάρχουν αρκετοί αλγόριθµοι ταξινόµησης. Είναι 1. η ταξινόµηση µε επιλογή, 2. η ταξινόµηση µε παρεµβολή 3. η γρήγορη ταξινόµηση 4. η ταξινόµηση φυσαλίδας ή ευθείας ανταλλαγής. Ο πιο απλός και ταυτόχρονα ο πιο αργός αλγόριθµος ταξινόµησης είναι η ταξινόµηση φυσαλίδας ή ευθείας ανταλλαγής. Αυτόν θα περιγράψουµε: Βασίζεται στην αρχή της σύγκρισης γειτονικών στοιχείων του πίνακα και ανταλλαγή τους µέχρι να διαταχθούν όλα σε µια σειρά (αύξουσα ή φθίνουσα) Η λογική αυτής της µεθόδου είναι η εξής: κάνουµε διαδοχικές σαρώσεις στον πίνακα. Σε κάθε σάρωση, το µικρότερο στοιχείο (για αύξουσα) µετακινείται προς την κορυφή του πίνακα. Αφού γίνουν όλες οι σαρώσεις θα επιτευχθεί η ταξινόµηση. Αλγόριθµος Ταξινόµηση_Φυσαλίδας εδοµένα//π,n// Για i από 2 µέχρι Ν Για j από N µέχρι i µε_βήµα -1 Αν Π[j-1] > Π[j] τότε temp Π[j-1] Π[j-1] Π[j] Π[j] temp Αποτελέσµατα // Π // Τέλος Ταξινόµηση_Φυσαλίδας Η τριάδα εντολών : temp Π[j-1] Π[j-1] Π[j] Π[j] temp µπορεί να αντικατασταθεί από την εντολή: Αντιµετάθεσε Π[j-1], Π[j]

29 AΕσΠΠ Αν θέλουµε να κάνουµε τον παραπάνω αλγόριθµό πιο «έξυπνο», ώστε να σταµατάει την διαδικασία αν ο πίνακας ταξινοµηθεί πριν γίνουν όλες οι σαρώσεις θα πρέπει:: Να χρησιµοποιήσουµε µια λογική µεταβλητή λογικού τύπου την OK µε τιµή ΨΕΥ ΕΣ αν ο πίνακας είναι αταξινόµητος και ΑΛΗΘΕΣ αν ο πίνακας είναι ταξινοµηµένος. Να αντικαταστήσουµε την εξωτερική ΓΙΑ µε µια ΟΣΟ. Ο αλγόριθµος φυσαλίδας θα γίνει: Αλγόριθµος Έξυπνη_Ταξινόµηση_Φυσαλίδας εδοµένα//π// i 2 ΟΚ ψευδές Όσο (i <= Ν) και (ΟΚ = ψευδές) επανάλαβε ΟΚ αληθές Για j από N µέχρι i µε_βήµα -1 Αν Π[j-1] > Π[j] τότε temp Π[j-1] Π[j-1] Π[j] Π[j] temp ΟΚ ψευδές i i + 1 Αποτελέσµατα // Π // Τέλος Έξυπνη_Ταξινόµηση_Φυσαλίδας Τυπικές επεξεργασίες σε ένα δισδιάστατο πίνακα Σε όλα τα παρακάτω θεωρούµε τον δισδιάστατο πίνακα ακεραίων Π µε Ν γραµµές και Μ στήλες. 1. ιάβασµα στοιχείων στον πίνακα Π Αλγόριθµος ιάβασµα_στοιχείων Για j από 1 µέχρι M Εµφάνισε Δώσε στοιχείο ιάβασε Π[i,j] Τέλος ιάβασµα_στοιχείων 2. Εµφάνιση των στοιχείων του πίνακα Π. Αλγόριθµος Εµφάνιση_στοιχείων Για j από 1 µέχρι M Γράψε Π[,i,,,j, ]=,Π[i,j] Τέλος Εµφάνιση_στοιχείων 3. Υπολογισµός του αθροισµάτων στον πίνακα Π µε Ν Χ Μ στοιχείων i. Ολικό άθροισµα Αλγόριθµος Ολικό ii. Άθροισµα ανά γραµµή. Αλγόριθµος Γραµµών iii. Άθροισµα ανά στήλη. Αλγόριθµος Στηλών Sum 0 Για j από 1 µέχρι M Sum 0 Sum 0 Για j από 1 µέχρι M Για j από 1 µέχρι M Για i από 1 µέχρι N Sum Sum + Π[i,j] Sum Sum + Π[i,j] Sum Sum + Π[i,j] Εµφάνισε Sum Τέλος Ολικό Sγρ[i] Sum Τέλος Γραµµών Sστ[j] Sum Τέλος Στηλών

Κεφ3ο οµές δεδοµένων και αλγόριθµοι 25 4. Υπολογισµός των µέσων όρων πίνακα Π µε Ν Χ Μ στοιχείων i. Ολικός µέσος όρος ii. Μέσος όρος ανά γραµµή. iii. Μέσος όρος ανά στήλη. Αλγόριθµος ΜΟ_ολικό Αλγόριθµος ΜΟ_γραµµών Αλγόριθµος ΜΟ_στηλών Sum 0 Για j από 1 µέχρι M Sum 0 Sum 0 Για j από 1 µέχρι M Για j από 1 µέχρι M Για i από 1 µέχρι N Sum Sum + Π[i,j] Sum Sum + Π[i,j] Sum Sum + Π[i,j] ΜΟγρ[i] Sum / Μ ΜΟστ[j] Sum / Ν ΜΟ Sum / (N*M) Τέλος ΜΟ_ολικό Τέλος ΜΟ_γραµµών Τέλος ΜΟ_στηλών 5. Υπολογισµός των µεγίστων πίνακα Π µε Ν Χ Μ στοιχείων i. Ολικό µέγιστο ii. Μέγιστα ανά γραµµή. Αλγόριθµος ΜΑΧ_ολικό Αλγόριθµος ΜΑΧ_γραµµών max Π[1,1] max Π[i,1] Για j από 2 µέχρι M Για j από 1 µέχρι M Αν Π[i,j] > max τότε Αν Π[i,j] > max τότε max Π[i,j] max Π[i,j] MAXγρ[i] max Τέλος ΜΑΧ_γραµµών Τέλος ΜAX_ολικό iii. Μέγιστα ανά στήλη. Αλγόριθµος ΜΑΧ_στηλών Για j από 1 µέχρι M max Π[1,j] Για i από 2 µέχρι N Αν Π[i,j] > max τότε max Π[i,j] MAXστ[j] max Τέλος ΜΑΧ_στηλών Παρατήρηση: Οι παραπάνω 3 αλγόριθµοί ανάλογα διαµορφώνονται για το ελάχιστο. Πλεονεκτήµατα Μειονεκτήµατα χρήσης των πινάκων Πλεονεκτήµατα. Είναι ένας βολικός και εύκολος τρόπος διαχείρισης πολλών δεδοµένων του ίδιου τύπου. Μειονεκτήµατα. α. Οι πίνακες απαιτούν µνήµη. Ο πίνακας δεσµεύει από την αρχή του προγράµµατος πολλές θέσεις µνήµης. Έτσι, η χρήση πολλών πινάκων σε ένα πρόγραµµα µπορεί να οδηγήσει και σε αδυναµία εκτέλεσης του. β. Οι πίνακες περιορίζουν τις δυνατότητες του προγράµµατος. Επειδή ο πίνακας είναι στατική δοµή το µέγεθος του πρέπει να δηλώνεται στην αρχή του προγράµµατος και παραµένει σταθερό κατά την εκτέλεση του προγράµµατος. Πότε πρέπει να χρησιµοποιώ πίνακες; Όταν τα δεδοµένα που εισάγονται σε ένα πρόγραµµα πρέπει να παραµείνουν στη µνήµη RAM µέχρι το τέλος της εκτέλεσης, τότε η χρήση πινάκων βοηθάει ή είναι απαραίτητη για την επίλυση του προβλήµατος.

29 AΕσΠΠ Στοίβες Ουρές Οι πίνακες χρησιµοποιούνται για την αποθήκευση και τη διαχείριση δύο δοµών: στοίβας - ουράς. 1. Στοίβα Stack. Περιγραφή της στοίβας. Μία στοίβα δεδοµένων µοιάζει µε µία στοίβα από πιάτα. Για παράδειγµα κάθε πιάτο που πλένεται τοποθετείται στη κορυφή (top) της στοίβας των πιάτων, ενώ για σκούπισµα λαµβάνεται και πάλι το πιάτο της κορυφής. Αντίστοιχα, τα δεδοµένα που βρίσκονται στην κορυφή της στοίβας λαµβάνονται πρώτα, ενώ αυτά που βρίσκονται στο βάθος της στοίβας λαµβάνονται τελευταία. Αυτή η µέθοδος επεξεργασίας ονοµάζεται: Τελευταίο µέσα, Πρώτο έξω (LIFO- Last In First Out) Λειτουργίες της στοίβας ύο είναι οι κύριες λειτουργίες σε µία στοίβα: Η ώθηση (push) στοιχείου στη κορυφή της στοίβας, και Η απώθηση (pop) στοιχείου από τη στοίβα Υπερχείλιση - Υποχείλιση Η διαδικασία της ώθησης πρέπει οπωσδήποτε να ελέγχει, αν η στοίβα είναι γεµάτη, οπότε τότε συµβαίνει υπερχείλιση (overflow) της στοίβας. Αντίστοιχα, η διαδικασία απώθησης ελέγχει, αν υπάρχει ένα τουλάχιστον στοιχείο στη στοίβα, δηλαδή ελέγχει αν γίνεται υπoχείλιση (underflow) της στοίβας. Παρατηρήσεις Στη δοµή δεδοµένων στοίβα παρατηρούµε τα εξής: 1. Η µέθοδος επεξεργασίας της στοίβας είναι η LIFO (Last In First Out) 2. Κάθε νέο στοιχείο προστίθεται στην κορυφή της στοίβας. 3. Κάθε φορά µπορούµε να επεξεργαστούµε µόνο το στοιχείο που βρίσκεται στην κορυφή της. 4. Για να επεξεργαστούµε ένα στοιχείο που δεν βρίσκεται στην κορυφή της στοίβας πρέπει να απωθήσουµε όλα τα στοιχεία που βρίσκονται από πάνω του. 5. Μπορεί να γίνει απώθηση, από την κορυφή της στοίβας, µόνο ενός στοιχείου κάθε φορά. Υλοποίηση της στοίβας µε τη βοήθεια πίνακα Μία στοίβα µπορεί να υλοποιηθεί πολύ εύκολα µε τη βοήθεια ενός µονοδιάστατου πίνακα. Μια βοηθητική µεταβλητή (µε το όνοµα συνήθως top) χρησιµοποιείται για να δείχνει το στοιχείο που τοποθετήθηκε τελευταίο στην κορυφή της στοίβας. Για την εισαγωγή ενός νέου στοιχείου στη στοίβα (ώθηση) αρκεί να αυξηθεί η µεταβλητή top κατά ένα και στη θέση αυτή να εισέλθει το στοιχείο. Αντίθετα για την εξαγωγή ενός στοιχείου από τη στοίβα (απώθηση) εξέρχεται πρώτα το στοιχείο που δείχνει η µεταβλητή top και στη συνέχεια η top µειώνεται κατά ένα για να δείχνει τη νέα κορυφή. Σε κάθε περίπτωση ελέγχουµε το φαινόµενο της υπερχείλισης και υποχείλισης. Παράδειγµα Ν Ν Ν Ν-1 Ν-1 Ν-1 3 3 56 top 3 2 35 top 2 35 2 35 top 1 12 1 12 1 12 Χρησιµοποιούµε πίνακα Ν θέσεων. Η µεταβλητή top δείχνει την θέση του στοιχείου που τοποθετήθηκε τελευταίο στην κορυφή της στοίβας. ηλ. top=2 Για την ώθηση ενός νέου στοιχείου στη στοίβα (56) αυξάνουµε το δείκτη top κατά 1 (top = 3) και τοποθετούµε το στοιχείο (56) στη θέση που δείχνει ο top (δηλ. στη θέση 3). Πριν την ώθηση ελέγχουµε αν γίνεται υπερχείλιση. Για την απώθηση στοιχείου από τη στοίβα, εξέρχεται το στοιχείο που δείχνει ο top (δηλ το 56) και στην συνέχεια ο top µειώνεται κατά 1 (δηλ. top =2). Πριν την απώθηση ελέγχουµε αν γίνεται υποχείλιση.

ΠΡΟΓΡΑΜΜΑ ώθηση ΣΤΑΘΕΡΕΣ Ν=50 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: στοίβα[ν],top ARXH AN top < N ΤΟΤΕ top top+1 ΙΑΒΑΣΕ στοίβα[top] ΑΛΛΙΩΣ ΓΡΑΨΕ αδύνατη ώθηση στοιχείου λόγω ΓΡΑΨΕ υπερχείλιση ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΓΡΑΜΜΑ απώθηση ΣΤΑΘΕΡΕΣ Ν=50 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: στοίβα[ν],top ARXH AN top > 0 ΤΟΤΕ ΓΡΑΨΕ στοίβα[top] top top-1 ΑΛΛΙΩΣ ΓΡΑΨΕ αδύνατη απώθηση στοιχείου λόγω ΓΡΑΨΕ υπορχείλιση ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ 27 2. Ουρά Queue Περιγραφή της ουράς Οι ουρές είναι καθηµερινό φαινόµενο. Για παράδειγµα, ουρές δηµιουργούνται όταν άνθρωποι, αυτοκίνητα, εργασίες, προγράµµατα κ.λπ. περιµένουν για να εξυπηρετηθούν. Σε µία ουρά αναµονής µε ανθρώπους, συµβαίνει να εξυπηρετείται εκείνος που στάθηκε στην ουρά πρώτος απ όλους τους άλλους. Η µέθοδος επεξεργασίας ονοµάζεται: Πρώτο µέσα πρώτο έξω (FIFO-First In First Out). Λειτουργίες της ουράς υο είναι οι κύριες λειτουργίες που εκτελούνται σε µία ουρά: Η εισαγωγή (enqueue) στοιχείου στο πίσω της ουράς, και Η εξαγωγή (dequeue) στοιχείου από το εµπρός άκρο της ουράς Οι δύο δείκτες της ουράς Άρα, σε αντίθεση µε τη δοµή της στοίβας, στην περίπτωση της ουράς απαιτούνται δυο δείκτες: ο εµπρός (front) και ο πίσω (rear) δείκτης, που µας δίνουν τη θέση του στοιχείου που σε πρώτη ευκαιρία θα εξαχθεί και τη θέση του στοιχείου που µόλις εισήλθε. Εισαγωγή και εξαγωγή από την ουρά 5 12 7 4 5 12 7 4 8 12 7 4 8 εµπρός πίσω εµπρός πίσω εµπρός πίσω (front) (rear) Το στοιχείο 5 είναι σε «θέση εξόδου». Το στοιχείο 4 «µόλις µπήκε». ΠΡΟΓΡΑΜΜΑ εισαγωγή ΣΤΑΘΕΡΕΣ Ν=50 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ουρά[ν], rear ARXH ΑΝ front=0 TOTE front=1 AN rear < N ΤΟΤΕ rear rear+1 ΙΑΒΑΣΕ ουρά[rear] ΑΛΛΙΩΣ ΓΡΑΨΕ αδύνατη η εισαγωγή ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ (front) (rear) Η ουρά µετά την εισαγωγή του στοιχείου 8. (front) (rear) Η ουρά µετά την εξαγωγή του 5. ΠΡΟΓΡΑΜΜΑ εξαγωγή ΣΤΑΘΕΡΕΣ Ν=50 ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ουρά[ν], front, rear ARXH AN front<= rear ΤΟΤΕ ΓΡΑΨΕ ουρά[front] front fornt+1 ΑΛΛΙΩΣ ΓΡΑΨΕ αδύνατη η εξαγωγή ΓΡΑΨΕ η ουρά είναι άδεια ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Υλοποίηση της ουράς µε την βοήθεια πίνακα Μια ουρά µπορεί να υλοποιηθεί µε τη βοήθεια ενός µονοδιάστατου πίνακα και δύο δεικτών (των front και rear). Για την εισαγωγή ενός στοιχείου στην ουρά αυξάνεται ο δείκτης rear κατά ένα και στη θέση αυτή αποθηκεύεται το στοιχείο. Αντίστοιχα για τη λειτουργία της εξαγωγής, εξέρχεται το στοιχείο που δείχνει ο δείκτης front, ο οποίος στη συνέχεια αυξάνεται κατά ένα, για να δείχνει το επόµενο στοιχείο που πρόκειται να εξαχθεί. Σε κάθε περίπτωση πρέπει να ελέγχεται πριν από κάθε ενέργεια αν υπάρχει ελεύθερος χώρος στον πίνακα για την εισαγωγή ή αν υπάρχει τουλάχιστον ένα στοιχείο για εξαγωγή. Παρατηρήσεις Στη δοµή δεδοµένων ουρά παρατηρούµε τα εξής: 1. Η µέθοδος επεξεργασίας της στοίβας είναι η FIFO (First In First Out) 2. Κάθε νέο στοιχείο προστίθεται στο τέλος της ουράς. 3. Κάθε φορά µπορούµε να επεξεργαστούµε µόνο το στοιχείο που βρίσκεται στην αρχή της ουράς. 4. Για να επεξεργαστούµε ένα στοιχείο που δεν βρίσκεται στην αρχή της ουράς πρέπει να εξάγουµε όλα τα στοιχεία που βρίσκονται µπροστά του. 5. Μπορεί να γίνει εξαγωγή, από την αρχή της ουράς, µόνο ενός στοιχείου κάθε φορά. Αρχεία Files Τι είναι το αρχείο Οι δοµές δεδοµένων που έχουµε αναφέρει (πίνακες, ουρά, στοίβα) αποθηκεύονται στη µνήµη RAM του υπολογιστή. Αφ ενός η µνήµη RAM έχει περιορισµένη χωρητικότητα και αφ ετέρου η λειτουργία της διαρκεί για όσο χρόνο ο υπολογιστής είναι ανοικτός. Για να αποθηκεύσουµε µόνιµα τα δεδοµένα που δεν θέλουµε να χάσουµε χρησιµοποιούµε ειδικές δοµές που λέγονται αρχεία. Το αρχείο (σε αντίθεση µε τις προηγούµενες δοµές δεδοµένων) αποθηκεύεται στις µονάδες δευτερεύουσας µνήµης, όπως είναι ο σκληρός δίσκος, η δισκέτα, το CD, η µνήµη flash κ.λ.π. οµή ενός αρχείου Το αρχείο αποτελείται από εγγραφές records.[µια εγγραφή για κάθε οντότητα π.χ. µουσικό cd] Κάθε εγγραφή αποτελείται από ένα ή περισσότερα πεδία fields. [ένα πεδίο για κάθε χαρακτηριστικό της οντότητας π.χ. κωδικό cd, τίτλος cd, όνοµα τραγουδιστή, κ.λ.π] Το πεδίο που ταυτοποιεί την εγγραφή, δηλ. δείχνει σε ποια οντότητα ανήκει, ονοµάζεται πρωτεύων κλειδί(π.χ. κωδικός cd) και αν υπάρχει και δεύτερο πεδίο που ταυτοποιεί την εγγραφή ονοµάζεται δευτερεύων κλειδί (π.χ. τίτλος cd). Τα κλειδιά χρησιµεύουν στην αναζήτηση της οντότητας-εγγραφής µέσα στο αρχείο. Παράδειγµα Έστω το αρχείο των µουσικών cd-rom. Κάθε cd-rom αποτελεί και µία εγγραφή του αρχείου. Κάθε εγγραφή (cd-rom) έχει ένα αριθµό πεδίων όπως: Κωδικό, Όνοµα Καλλιτέχνη, Έτος Κυκλοφορίας, Είδος Μουσικής, Αριθµό Τραγουδιών, Τίτλο τραγουδιών κ.λ.π. 27 Πεδίο Αρχείο Εγγραφή

29 AΕσΠΠ Λίστες ( υναµική οµή) Τι είναι η λίστα Είναι (µια δυναµική δοµή δεδοµένων) που οι κόµβοι τους συνήθως βρίσκονται σε αποµακρυσµένες θέσεις µνήµης και η σύνδεσή τους γίνεται µε δείκτες (pointer). Ο κόµβος µιας λίστας έχει την µορφή: Τα δεδοµένα είναι ίδιου τύπου. εδοµένα είκτης Τι είναι ο δείκτης Ο δείκτης είναι ένας ιδιαίτερος τύπος που προσφέρεται από τις περισσότερες σύγχρονες γλώσσες προγραµµατισµού παίρνει τιµές διευθύνσεις της κύριας µνήµης (RAM) χρησιµεύει για την σύνδεση των κόµβων που είναι αποθηκευµένοι (συνήθως) σε µη συνεχόµενες θέσεις µνήµης. ηλαδή ο δείκτης ενός κόµβου έχει τιµή την διεύθυνση της RAM που βρίσκεται ο επόµενος κόµβος. πεδίο µέσα στον κόµβο της δοµής δεδοµένων. Λίστα µε 5 κόµβους Ο δείκτης έχει σχήµα βέλους και δείχνει το κόµβο στον οποίο παραπέµπει Εισαγωγή δεδοµένων στη λίστα Η εισαγωγή δεδοµένων διευκολύνεται µε την χρήση δεικτών. Στο παρακάτω σχήµα φαίνεται η εισαγωγή νέου κόµβου µεταξύ 3 ου και 4 ου. Απλά: Βάζουµε τον δείκτη του 3 ου κόµβου να δείχνει τον νεοεισαχθέντα κόµβο (και όχι τον 4 ο ) Ο δείκτης του νεοεισαχθέντα κόµβου θα δείχνει τον παλιό 4 ο και τώρα 5 ο κόµβο ιαγραφή κόµβου στη λίστα Η διαγραφή δεδοµένων διευκολύνεται µε την χρήση δεικτών. Στο παρακάτω σχήµα φαίνεται η διαγραφή του 4 ου κόµβου. Απλά: Αλλάζουµε την τιµή τον δείκτη του 3 ου κόµβου να δείχνει τον 5 ο κόµβο (και όχι τον 4 ο ) Ο παλιός 4 ος κόµβος (αυτός που διαγράφτηκε) αποτελεί «άχρηστο δεδοµένο» και ο χώρος µνήµης που καταλάµβανε, παραχωρείται για άλλη χρήση. ένδρα Τι είναι το δένδρο Η έννοια του δέντρου είναι στενά συνδεδεµένη µε την έννοια της ιεραρχίας και αποτελεί µια µη γραµµική δοµή Είναι δοµές δεδοµένων που υλοποιούνται µε την βοήθεια δεικτών (δυναµικές δοµές όπως και οι λίστες) αλλά µπορούν να υλοποιηθούν και µε στατικές δοµές (όπως οι πίνακες). Το έντρο είναι ένα πεπερασµένο σύνολο κόµβων (ίδιου τύπου) και ακµών που συνδέουν τους κόµβους, µε βάση κάποια σχέση που δηµιουργεί την ιεραρχική δοµή των κόµβων.

Κεφ3ο οµές δεδοµένων και αλγόριθµοι 27 Το κύριο χαρακτηριστικό του δένδρου είναι, ότι από ένα κόµβο δεν υπάρχει ένας µόνο επόµενος, αλλά περισσότεροι. Υπάρχει ένας µόνο κόµβος που λέγεται ρίζα από τον οποίο ξεκινούν όλοι οι άλλοι κόµβοι. Σχηµατική µορφή ενός δένδρου Α Β Γ Ε Ζ Η Θ Κ Λ Μ Ν Π Ρ Τ Υποδένδρο: τµήµα του δένδρο µε ρίζα ένα οποιονδήποτε κόµβο Γονέας ενός κόµβου λέγεται ο κόµβος στον οποίο ανήκει π.χ. Ο κόµβος Α είναι γονέας των Β, Γ,. Παιδία ενός κόµβου λέγονται οι κόµβοι που περιέχει π.χ.οι κόµβοι Β, Γ, λέγονται παιδιά της ρίζας. Οµοίως Φ Οι κόµβοι Ε, Ζ, Η λέγονται παιδιά του κόµβου Β Ρίζα: (Κόµβος χωρίς πρόγονο) Ο κόµβος Α λέγεται ρίζα του δένδρου. Φύλλα: (Κόµβος χωρίς παιδιά) Όλοι οι κόµβοι από τους οποίους δεν αρχίζει κάποιο υποδέντρο (δεν έχουν παιδιά), Οι κόµβοι Ε, Ζ, Η, Π, Κ, Λ, Ρ,Φ, Ν είναι τα φύλλα του παραπάνω δένδρου. Όλοι οι άλλοι κόµβοι ονοµάζονται µη-τερµατικοί ή κλαδιά (Β, Γ, Θ, Μ,Τ) Βαθµός κόµβου: Ο αριθµός των παιδιών ενός κόµβου ορίζει το βαθµό του κόµβου. Οι κόµβοι Β, είναι 3 ου βαθµού, ο Γ είναι 2 ου βαθµού και τα φύλλα 0 ου βαθµού. Βαθµός δένδρου είναι ο µέγιστος βαθµός κόµβου (στο παράδειγµα 3) ιαδροµή από τον κόµβο Χ στο κόµβο Υ: είναι η ακολουθία των κόµβων από τους οποίους περνάµε για να πάµε από τον Χ στο Υ. Η ιαδροµη από τον προς το Φ είναι η ακολουθία, Μ, Τ, Φ. Το µήκος της διαδροµής αυτής είναι 3. Το ύψος είναι το µήκος της διαδροµής από την ρίζα στο πιο αποµακρυσµένο φύλλο του δέντρου (στο παράδειγµα είναι 4), το ύψος των φύλλων είναι 0, ενώ το ύψος του κόµβου Γ είναι 3 Το επίπεδο (απόσταση από ρίζα-επίπεδο 0) του κόµβου Γ είναι 1 και του Φ είναι 4

29 AΕσΠΠ υαδικά δένδρα Υπάρχουν πολλά είδη δέντρων. Ένα από τα πιο γνωστά είναι το ονοµαζόµενο δυαδικό δέντρο (Binary tree), όπου κάθε µη τερµατικός κόµβος έχει ακριβώς δύο παιδιά. K1 K2 K3 K4 K5 K6 K7 K8 K9 Γράφοι Τι είναι ο γράος Ένας γράφος αποτελείται από ένα σύνολο κόµβων (που λέγονται σηµεία ή κορυφές) και ένα σύνολο γραµµών (που λέγονται ακµές ή τόξα) που ενώνουν µερικούς ή όλους τους κόµβους.. Οι κόµβοι αυτοί ενώνονται τυχαία µεταξύ τους ( εν υπάρχει κάποια ιεραρχική οργάνωση). Οι κόµβοι δεν είναι απαραίτητο να κατέχουν συνεχόµενες θέσεις µνήµης. Ο γράφος αποτελεί την πιο γενική δοµή δεδοµένων, µε την έννοα ότι όλες οι προηγούµενες δοµές δεδοµένων µπορούν να θεωρηθούν περιπτώσεις γράφων. Οι γράφοι προσφέρουν µια χρήσιµη µέθοδο για τη διατύπωση και λύση πολλών προβληµάτων, όπως σε: δίκτυα και συστήµατα τηλεπικοινωνιών (π.χ. το Internet), χάρτες επιλογή δροµολογίων, προγραµµατισµό εργασιών, ανάλυση προγραµµάτων. Σχηµατικά στον γράφο οι κόµβοι (µαύροι κύκλοι) µπορούν να ενώνονται µε πολλούς άλλους κόµβους (µε τα τόξα).