Σχετικά έγγραφα
2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ιαφάνειες παρουσίασης #5 (β)

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Standard Template Library (STL) C++ library

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

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

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

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΠΙΝΑΚΕΣ. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Ένωση και Συγχώνευση πινάκων Να γράψετε πρόγραμμα που θα διαβάζει τα στοιχεία δύο πινάκων Α[350] και Β[150] με ονόματα και τελικά θα δημιουργεί έναν

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

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

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

Παρακάτω θα δούμε πιο αναλυτικά τον καθένα από αυτούς.

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

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

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

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

ΗΜΥ Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΠΙΝΑΚΕΣ. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

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

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

Μετατροπή δισδιάστατου σε μονοδιάσταστο και αντίστροφα Να γράψετε πρόγραμμα που: α. Να διαβάζει τα στοιχεία ενός πίνακα ακεραίων Α[40,25], με τον

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

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

Εργαστήριο 10 Πίνακες. Πίνακες. Η έννοια της δόμησης δεδομένων στη PASCAL. Σκοπός

Πληροφορική 2. Δομές δεδομένων και αρχείων

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 9: Αυτόματα Στοίβας (Pushdown Automata - PDA)

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

POINTERS, AGGREGATION, COMPOSITION

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

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

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

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

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

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Στοίβες Ουρές - Λίστες

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 2η: Στοίβες Ουρές - Λίστες Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

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

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

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

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

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

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

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

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

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

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Κεφάλαιο 7: Υπορουτίνες

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

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

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

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

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

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

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

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

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

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

IsEmptyList(L): επιστρέφει true αν L = < >, false

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

Ενότητα 2 Στοίβες Ουρές - Λίστες

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

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

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

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

Transcript:

Ταξινομώντας τον πίνακα σε φθίνουσα σειρά ως προς τις πωλήσεις, μπορούμε να δούμε ποιοι ήταν οι καλύτεροι πωλητές. Ζωή Μάνος Δημήτρης Κατερίνα Γιάννα Πωλήσεις Μαρτίου Πωλητής Πωλήσεις (χιλιάδες κουτιά) 7.2 5.3 4.5 3.6 2.8 Το πρόβλημα με τις γραμμικές λίστες (και συνεπώς με τους πίνακες) είναι ότι η προσθαφαίρεση στοιχείων έχει μεγάλο κόστος: Γιαναπροσθέσομεέναστοιχείοστη θέση i, ενός πίνακα Α[Ν] (i<n), πρέπει να μετατοπίσομε όλα τα στοιχεία του πίνακα από το i και μετά μία θέση προς τα δεξιά για να δημιουργηθεί μια κενή θέση στη θέση i. Κατ αντιστοιχία, αφού σβήσομε ένα στοιχείο στη θέση i, πρέπει να μετατοπίσομε όλα τα στοιχεία από το i+1 και μετά αριστερά κατά μία θέση! Αν συμβολίσουμε την αρχική λίστα των πωλήσεων με Π, τότε Π = [4.5, 7.2, 5.3, 3.6, 2.8] με Π 0 =4.5, Π 1 =7.2, Π 2 =5.3, Π 3 =3.6, και Π 4 =2.8. Λέμε επίσης ότι το Π είναι ένα διάνυσμα, ήένας μονοδιάστατος πίνακας.

Δ2. Stacks (στοίβες) Σε μορφή στοίβας, η λίστα Π γράφεται: 4.5 7.2 5.3 3.6 2.8 Οι πράξεις που μπορούμε να κάνομε σε μια στοίβα είναι δύο: PUSH: Πρόσθεση δεδομένων POP: Αφαίρεση δεδομένων Η PUSH προσθέτει δεδομένα πάντα στην κορυφή της στοίβας ενώ η POP αφαιρεί δεδομένα πάντα από την κορυφή της. 4.4 4.5 4.5 4.5 7.2 7.2 7.2 7.2 5.3 PUSH(4.4) 5.3 POP 5.3 POP 5.3 3.6 3.6 3.6 3.6 2.8 2.8 2.8 2.8 Το σύστημα αυτό αποθήκευσης δεδομένων λέγεται: LIFO = Last-In-First-Out Δ2. Queues (ουρές) Μιαουράδιαφέρειαπόμιαστοίβαστοότι δεδομένα αφαιρούνται μεν από την κορυφή, αλλά προσθέτονται στο τέλος. Οι επιτρεπόμενες πράξεις είναι πάλι οι PUSH και POP. Προσέξτε όμως τη διαφορετική συμπεριφορά της PUSH σε σχέση με τη στοίβα. 4.5 4.5 7.2 7.2 7.2 5.3 5.3 5.3 5.3 PUSH(4.4) 3.6 POP 3.6 POP 3.6 3.6 2.8 2.8 2.8 2.8 4.4 4.4 4.4 Το σύστημα αυτό αποθήκευσης δεδομένων λέγεται: FILO = Last-In-Last-Out

Δ.3 Πίνακες Βοηθούν την επεξεργασία μεγάλου πλήθους πληροφοριών του ίδιου τύπου. Φανταστείτε το πρόγραμμα που θα γράφατε αν θέλατε να βρείτε τον μέγιστο 100 αριθμών! Χρησιμοποιούν δείκτες για την επεξεργασία ενός συγκεκριμένου στοιχείου του πίνακα. Παραδείγματα Integer A[5]; Ηδήλωσηαυτήορίζειένανμονοδιάστατο πίνακα ακεραίων (μία γραμμή) με 10 στοιχεία: Α[0], Α[1], Α[2], Α[3], και Α[4] Real Β[2,3]; Η δήλωση αυτή ορίζει έναν δισδιάστατο πίνακα πραγματικών με 2 γραμμές και 3 στήλες, που αποτελείται από τα εξής στοιχεία: Α[0,0] Α[0,1] Α[0,2] Α[1,0] Α[1,1] Α[1,2] Όμως, οι πίνακες αποθηκεύονται στη μνήμη του Η/Υ σαν γραμμικές λίστες, π.χ. ο πίνακας 1 7 2 3 0 4 αποθηκεύεται ως [1, 7, 2, 3, 0, 4] Τότε όλοι οι πίνακες είναι μονοδιάστατοι; Παράδειγμα 1 με πίνακες Άσκηση1: Διαβάστε Ν αριθμούς από ένα αρχείο Filename και υπολογίστε τον μέσο όρο τους Algorithm Askhsh1(FileName, dummy, Data[]) BEGIN FOR i=0 TO i=n-1, STEP=1 DO Data[N]:= READ(File); ENDFOR Print, Mesos Oros =, MeanValue(Data) END Function MeanValue(Real Data[]): Real BEGIN SUM = 0; FOR i=0 TO i= DIM(Data)-1, STEP=1 DO SUM:=SUM + Data[i]; ENDFOR MeanValue := SUM / N; END Σημείωση: Γράφοντας το πρόγραμμα αυτό σε Pascal θα διαπιστώσετε ότι θα χρειαστείτε ένα επιπλέον loop. Γιατί;;

Παράδειγμα 2 με πίνακες Άσκηση2: Το αρχείο FileName περιέχει τον παρακάτω πίνακα ακεραίων. Διαβάστε τους σε έναν δισδιάστατο πίνακα και υπολογίστε το μέσο όρο τους: 0 5 7 9 14 25 42 0 7 44 33 21 21 45 53 2 34 8 50 1 3 2 100 21 33 1 72 Algorithm Askhsh2(FileName, dummy, Data[]) BEGIN FOR i=0 TO i=2, STEP=1 DO FOR j=0 TO j=8, STEP=1 DO Data[i,j]:= READ(File); ENDFOR ENDFOR SUM = 0; FOR i=0 TO i=2, STEP=1 DO FOR j=0 TO j=8, STEP=1 DO SUM := SUM + Data[i,j]; ENDFOR ENDFOR PRINT, Mesos Oros =, SUM/27; END Linked Lists (Συνδεδεμένες λίστες) Σε αντίθεση με τους πίνακες, όπου η δομή των δεδομένων αντιπροσωπεύει και τον (γραμμικό) τρόπο αποθήκευσης τους, οι Συνδεμένες Λίστες χρησιμοποιούν pointers (δείκτες) για να συνδέσουν τα δεδομένα σε μια σειρά. Ένας pointer δεν είναι παρά ένας αριθμός στη μνήμη που δείχνει σε κάποια θέση της μνήμης που περιέχει δεδομένα. Πωλητής Δημήτρης Ζωή Μάνος Γιάννα Κατερίνα Ζωή Πωλήσεις 4.5 7.2 5.3 2.8 3.6 Μάνος Θέση στη Μνήμη 3(*) 41 50 7 22 Δημήτρης Κατερίνα Pointer (αρχική λίστα) 41 50 7 22 Null Γιάννα

Γιαναταξινομήσομεταστοιχείατηςλίσταςσε αλφαβητική σειρά, δεν μεταφέρομε δεδομένα στη μνήμη, απλά αλλάζομε τους pointers! Η ταξινόμηση σε φθίνουσα σειρά πωλήσεων γίνεται πάλι με pointers! Πωλητής Δημήτρης Θέση στη Μνήμη 3 Pointer (αλφαβητικά) 41 Πωλητής Δημήτρης Πωλήσεις 4.5 Πωλήσεις 4.5 Θέση στη Μνήμη 3 Pointer (αλφαβητικά) 22 Ζωή 7.2 41 22 Ζωή 7.2 41 (*) 50 Μάνος 5.3 50 Null Μάνος 5.3 50 3 Γιάννα 2.8 7(*) 3 Γιάννα 2.8 7 Null Κατερίνα 3.6 22 50 Κατερίνα 3.6 22 7 Μάνος Κατερίνα Μάνος Κατερίνα Ζωή Δημήτρης Γιάννα Ζωή Δημήτρης Γιάννα

Τα δεδομένα στους πίνακες που είδαμε (δηλαδή τα ζεύγη Όνομα:Πωλήσεις) λέγονται records (εγγραφές) Κάθε record περιλαμβάνει fields (πεδία). Στο συγκεκριμένο παράδειγμα έχομε δύο πεδία, το όνομα και τις πωλήσεις για το μήνα Μάρτιο. Ας υποθέσουμε ότι το κάθε record περιέχει ένα σύνολο από δεδομένα (π.χ. όνομα, πωλήσεις κατά μήνα για τα τελευταία 2 χρόνια). Προσέξτε ότι αυτό που πραγματικά θέλουμε να αποθηκεύσουμε σε κάθε record είναι ο pointer στον επόμενο πωλητή, πράγμα που δεν συμβαίνει στους πίνακες που είδαμε μέχρι τώρα. Για την ταξινόμηση σε φθίνουσα σειρά πωλήσεων έχουμε: Μάνος 3 Κατερίνα 7 Ζωή 50 Δημήτρης 22 41 Γιάννα Null