ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αφηρηµένοι Τύποι Δεδοµένων Κεφάλαιο 4 ( , ) Ε. Μαρκάκης Επίκουρος Καθηγητής
|
|
- Πανόπτης Γεννάδιος
- 7 χρόνια πριν
- Προβολές:
Transcript
1 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Αφηρηµένοι Τύποι Δεδοµένων Κεφάλαιο 4 ( , ) Ε. Μαρκάκης Επίκουρος Καθηγητής
2 Περίληψη Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα ώθησης προς τα κάτω Παραδείγµατα πελατών για στοίβες Υλοποιήσεις στοίβας µε πίνακες και λίστες Γενικές υλοποιήσεις Ουρές FIFO Υλοποιήσεις ουράς µε πίνακες και λίστες ΑΤΔ για προβλήµατα συνδετικότητας ΑΤΔ για πολυώνυµα Δοµές Δεδοµένων 06-2
3 Αφηρηµένοι τύποι δεδοµένων Όλα τα υπολογιστικά συστήµατα βασίζονται σε στρώσεις αφαίρεσης (layers of abstraction) Το µοντέλο του bit: 0 ή 1 (χωρίς να µας απασχολεί πώς επιτυγχάνεται στο hardware, π.χ. τσιπ πυριτίου, 5V 1, 0V 0) Γλώσσα προγραµµατισµού: ο προγραµµατιστής χρειάζεται να γνωρίζει τις διαθέσιµες δοµές δεδοµένων και εντολές της γλώσσας και όχι απαραίτητα πώς υλοποιείται ο compiler Σχεδίαση αλγορίθµων: ανεξάρτητο από γλώσσα προγραµµατισµού (συνήθως) Σε κάθε επίπεδο υπάρχει διαχωρισµός µεταξύ υλοποίησης και χρήσης Δοµές Δεδοµένων 06-3
4 Αφηρηµένοι τύποι δεδοµένων ΑΤΔ: τύπος δεδοµένων που µπορούµε να προσπελάσουµε µόνο µέσω κάποιας διασύνδεσης Διασύνδεση (ή διεπαφή): περιγραφή τύπου δεδοµένων και µεθόδων Πελάτης: πρόγραµµα που χρησιµοποιεί τις µεθόδους Υλοποίηση: κώδικας που υλοποιεί τις µεθόδους Εποµένως τα προγράµµατα πελάτες δεν µπορούν να έχουν πρόσβαση στα δεδοµένα παρά µόνο µέσω των µεθόδων που παρέχει η διασύνδεση Διαχωρισµός διεπαφής και υλοποίησης Επιτρέπει το χτίσιµο επιπέδων αφαίρεσης Επαναχρησιµοποίηση λογισµικού Παραδείγµατα: στοίβες, ουρές, πίνακες συµβόλων Δοµές Δεδοµένων 06-4
5 Αφηρηµένοι τύποι δεδοµένων Πλεονεκτήµατα ΑΤΔ Η υλοποίηση µπορεί να χρησιµοποιηθεί από διάφορους πελάτες Σχεδίαση αρθρωτού (modular), άρα επαναχρησιµοποιήσιµου κώδικα Επιτρέπει την καλύτερη ενσωµάτωση και χρήση βελτιστοποιηµένων υλοποιήσεων (σε αντικατάσταση παλιότερων υλοποιήσεων) Δοµές Δεδοµένων 06-5
6 Αφηρηµένοι τύποι δεδοµένων Προγράµµατα-πελάτες: Πρόσβαση µόνο µέσω των δηµόσιων µεθόδων Υλοποίηση: Ιδιωτικά δεδοµένα Ιδιωτικές µέθοδοι Δηµόσιες µέθοδοι Δοµές Δεδοµένων 06-6
7 Αφηρηµένοι τύποι δεδοµένων Παράδειγµα: ας επανέλθουµε στην τάξη Point για επεξεργασία σηµείων στο επίπεδο Περιέχει δεδοµένα και µεθόδους class Point { double x, y; Point() { x = Math.random(); y = Math.random(); } Point(double x, double y) {this.x = x;this.y = y;} double r() { return Math.sqrt(x*x + y*y); } double theta() { return Math.atan2(y, x); } double distance(point p) { double dx = x - p.x, dy = y - p.y; return Math.sqrt(dx*dx + dy*dy); } public String tostring() { return "(" + x + "," + y + ")"; } } Δοµές Δεδοµένων 06-7
8 Αφηρηµένοι τύποι δεδοµένων Οι χρήστες (προγράµµατα-πελάτες) δεν χρειάζεται να γνωρίζουν πώς αποθηκεύονται τα σηµεία Χειρισµός σηµείων µέσω µεθόδων και µόνο Οι χρήστες γνωρίζουν ποιες είναι οι µέθοδοι αλλά όχι πώς λειτουργούν Διεπαφή ΑΤΔ σηµείων Περιλαµβάνει µόνο τα δηµόσια µέλη της τάξης class Point { //τι ξερει ο πελάτης ότι µπορεί να χρησιµοποιήσει Point() Point(double, double) double x() double y() double r() double theta() double distance(point) public String tostring() } Δοµές Δεδοµένων 06-8
9 Αφηρηµένοι τύποι δεδοµένων Υλοποίηση 1: χρήση καρτεσιανών συντεταγµένων class Point { private double x, y; Point() { x = Math.random(); y = Math.random(); } Point(double x, double y) {this.x = x; this.y = y;} double x() { return x; } double y() { return y; } double r() { return Math.sqrt(x*x + y*y); } double theta() { return Math.atan2(y, x); } double distance(point p) { double dx = x - p.x(); double dy = y - p.y(); return Math.sqrt(dx*dx + dy*dy); } public String tostring() { return "(" + x + ","+y+")"; } } Δοµές Δεδοµένων 06-9
10 Αφηρηµένοι τύποι δεδοµένων Διαφορές µε πριν: Τα δεδοµένα είναι private 2 νέες µέθοδοι x(), y() Σε ιδιωτικά µέλη µπορεί να γίνει αναφορά µόνο µέσα από την ίδια την κλάση Πρόσβαση στα δεδοµένα από το πρόγραµµα πελάτη γίνεται µόνο µέσω των µεθόδων, π.χ. p.x(), p.y() Έστω τώρα ότι θέλουµε να αλλάξουµε την εσωτερική αναπαράσταση σε πολικές συντεταγµένες αντί για καρτεσιανές Πρέπει να αλλάξουν και όλα τα προγράµµατα-πελάτες? Δοµές Δεδοµένων 06-10
11 Αφηρηµένοι τύποι δεδοµένων Υλοποίηση 2: χρήση πολικών συντεταγµένων class Point { private double r, theta; Point() { double x = Math.random(), y = Math.random(); this = new Point(x, y); } Point(double x, double y) { r = Math.sqrt(x*x + y*y); theta = Math.atan2(y, x); } double r() { return r; } double theta() { return theta; } double x() { return r*math.cos(theta); } double y() { return r*math.sin(theta); } double distance(point p) { double dx = x() - p.x(); double dy = y() - p.y(); return Math.sqrt(dx*dx + dy*dy); } public String tostring() { return "(" + x() + ", " + y() + ")"; } } Δοµές Δεδοµένων 06-11
12 Αφηρηµένοι τύποι δεδοµένων Όσοι πελάτες χρησιµοποιούσαν τις x(), y() πριν, µπορούν να εξακολουθήσουν να τις χρησιµοποιούν και τώρα Καµία απολύτως αλλαγή στον κώδικα του πελάτη Μας επιτρέπει να κάνουµε αλλαγές στην αναπαράσταση προς βελτιστοποίηση της υλοποίησης Debugging χωρίς αλλαγές στους πελάτες Δοµές Δεδοµένων 06-12
13 Συλλογές στοιχείων Γενικευµένες ουρές: θεµελιώδεις δοµές δεδοµένων Τιµές: σύνολα αντικειµένων (άγνωστος τρόπος αποθήκευσης), µπορεί να είναι int, char, Object, Πράξεις: εισαγωγή νέου στοιχείου, αποµάκρυνση στοιχείου, έλεγχος αν το σύνολο είναι κενό Υλοποίηση µε λίστες ή πίνακες Η σηµασία της εισαγωγής είναι προφανής Αποµάκρυνση: ποιο αντικείµενο επιστρέφει η αποµάκρυνση στοιχείου; (π.χ. αυτό που έχει µείνει περισσότερη ώρα, λιγότερη ώρα, το 3 ο από το τέλος,...) Κάθε κριτήριο αποµάκρυνσης νέα δοµή δεδοµένων Δοµές Δεδοµένων 06-13
14 Συλλογές στοιχείων Στοίβα (Pushdown Stack) Αποµακρύνουµε το αντικείµενο που εισήχθη πιο πρόσφατα Αναλογία: πλύσιµο πιάτων, στοίβα των δίσκων στο εστιατόριο Ορολογία: push (εισαγωγή) και pop (αποµάκρυνση) Αναφέρεται και ως ουρά LIFO (Last In First Out) Δοµές Δεδοµένων 06-14
15 Συλλογές στοιχείων Ουρά (Queue) Αποµακρύνουµε το αντικείµενο που εισήχθη πιο παλιά Αναλογία: ουρά στο κυλικείο, σε δηµόσιες υπηρεσίες (σχεδόν...) Ορολογία: enqueue ή put (εισαγωγή) και dequeue ή get (αποµάκρυνση) Αναφέρεται συνήθως ως ουρά FIFO (First In First Out) Δοµές Δεδοµένων 06-15
16 Εφαρµογές µε χρήση στοίβας/ουράς Η χρήση στοίβας προσοµοιώνει την ιστορία του Θησέα µε το µίτο της Αριάδνης: κάθε εισαγωγή στη στοίβα δηλώνει ένα νέο µονοπάτι Παράδειγµα 1: Λειτουργίες Undo και Back Έστω ότι γράφετε ένα κείµενο στο OpenOffice. Κάποια στιγµή διαπιστώνετε ότι πρέπει να ακυρώσετε τις 4 τελευταίες ενέργειες που κάνατε Θέλετε να επαναφέρετε το κείµενο όπως ήταν πριν Πώς µπορεί να θυµάται το OpenOffice πώς ήταν το κείµενο πριν? Αντίστοιχο παράδειγµα σε web browsing: Πώς µπορεί ο browser να θυµάται µε αποδοτικό τρόπο ποιες ήταν οι τελευταίες k διαδοχικές σελίδες που επισκεφτήκατε? Η χρήση στοίβας είναι η πιο άµεση λύση Δοµές Δεδοµένων 06-16
17 Εφαρµογές µε χρήση στοίβας/ουράς Παράδειγµα 2: Βacktracking αλγόριθµοι Αλγόριθµοι που κατασκευάζουν υποψήφιες λύσεις τµηµατικά Ελέγχουν σε κάθε βήµα αν µια «µερικά σχηµατισµένη» πιθανή λύση µπορεί να επεκταθεί Αν όχι επιστρέφουν στο κοµµάτι της λύσης που δεν ευθύνεται για την αποτυχία και ξαναρχίζουν Πάλι µε χρήση στοίβας Δοµές Δεδοµένων 06-17
18 Εφαρµογές µε χρήση στοίβας/ουράς Παράδειγµα 2: Βacktracking αλγόριθµοι Μπορούµε να τοποθετήσουµε n βασίλισσες σε n x n σκακιέρα έτσι ώστε να µην µπορεί να επιτεθεί καµία στις υπόλοιπες? Brute force: Αν τσεκάρουµε όλους τους πιθανούς τρόπους να βάλουµε n βασίλισσες σε n x n σκακιέρα: n 2 n Για n=4 έχουµε 1820 πιθανούς τρόπους Δοµές Δεδοµένων 06-18
19 Εφαρµογές µε χρήση στοίβας/ουράς Παράδειγµα 2: Βacktracking αλγόριθµοι Χρειάζεται να τσεκάρουµε όλες τις 1820 πιθανές λύσεις για n=4? Παρατήρηση: Κάθε βασίλισσα πρέπει να πάει σε διαφορετική στήλη Αρκεί να κοιτάξουµε τις πιθανές αντιµεταθέσεις (permutations) n! αντιµεταθέσεις, για n=4, έχουµε 24 πιθανές λύσεις Ακόµα και στις αντιµεταθέσεις, µπορούµε εύκολα να απορρίψουµε κάποιες Δοµές Δεδοµένων 06-19
20 Εφαρµογές µε χρήση στοίβας/ουράς Παράδειγµα 2: Βacktracking αλγόριθµοι Πιθανός αλγόριθµος: Βάλε την 1 η βασίλισσα στην 1 η στήλη και 1 η γραµµή Βρες όλους τους επιτρεπτούς τρόπους να βάλεις τη 2 η βασίλισσα στη 2 η στήλη (γραµµές 3 ως n) Δοκίµασε 1 τέτοια θέση Βρες όλους τους επιτρεπτόυς τρόπους να βάλεις την 3 η βασίλισσα στην 3 η στήλη Δοκίµασε 1 τέτοια θέση. Αν δεν παραβιάζει κάποιο περιορισµό, τότε πήγαινε στην 4 η στήλη και βρες όλες τις επιτρεπτές θέσεις να βάλεις την 4 η βασίλισσα στην 4 η στήλη Αν αντιθέτως δεν οδηγεί σε επιτρεπτή λύση, κάνε backtrack και δοκίµασε την επόµενη επιτρεπτή θέση για την 3 η στήλη Συνέχισε έτσι... Δοµές Δεδοµένων 06-20
21 Q Q Q Q Q Q Q Q Δοµές Δεδοµένων 06-21
22 Εφαρµογές µε χρήση στοίβας/ουράς Παράδειγµα 2: Βacktracking αλγόριθµοι Ο αλγόριθµος αυτός ψάχνει λιγότερες από n! πιθανές λύσεις Για n=4, λιγότερες από 24 υποψήφιες λύσεις Υπάρχουν και πιο γρήγοροι αλγόριθµοι (πρακτικοί για πιο µεγάλες τιµές του n) Για µεγάλα n, πώς θα θυµάται ο αλγόριθµος ποιες λύσεις έχει ήδη επεξεργαστεί και ποιες όχι? Είτε κάνουµε υλοποίηση µε αναδροµή είτε χρησιµοποιούµε στοίβα για να θυµόµαστε σε ποιο βήµα είµαστε Και η αναδροµή ούτως ή άλλως κάνει χρήση στοίβας από τον compiler Δοµές Δεδοµένων 06-22
23 Στοίβα ώθησης προς τα κάτω Πράξεις στοίβας Pop(): αποµάκρυνση του αντικειµένου που εισήχθη τελευταίο Push(): εισαγωγή ενός αντικειµένου στη στοίβα isempty(): είναι άδεια η στοίβα; Δοµές Δεδοµένων 06-23
24 Στοίβα ώθησης προς τα κάτω Διεπαφή στοίβας ακεραίων Ο πελάτης µπορεί να δίνει και το µέγιστο πλήθος στοιχείων class intstack { // υλοποιήσεις και ιδιωτικά μέλη κρυμμένα intstack(int) boolean isempty() void push(int) int pop() } Δοµές Δεδοµένων 06-24
25 Στοίβα ώθησης προς τα κάτω Παραδείγµατα διεπαφών στοίβας class intstack { intstack(int) boolean isempty() void push(int) int pop() } Πριν δούµε υλοποιήσεις της διεπαφής, θα δούµε µερικά προγράµµατα-πελάτη class doublestack { doublestack(int) boolean isempty() void push(double) double pop() } Δοµές Δεδοµένων 06-25
26 Παραδείγµατα πελατών για στοίβες Πολλές σηµαντικές εφαρµογές Υπολογισµός αριθµητικών παραστάσεων Εικονική µηχανή Java Κλήσεις µεθόδων κατά την εκτέλεση ενός προγράµµατος Λειτουργίες Undo και Back Γλώσσα περιγραφής σελίδων PostScript Υπολογισµός αριθµητικών παραστάσεων Έστω ότι θέλουµε να υπολογίσουµε την παράσταση! (5 * ( ( ( ) * ( 4 * 6 ) ) + 7 )) Η παράσταση αυτή είναι σε ενθεµατική µορφή (infix) Μετατροπή σε µεταθεµατική µορφή (postfix)! * * 7 + * Κάθε τελεστής ακολουθεί τα ορίσµατά του Δεν χρειάζονται παρενθέσεις Δοµές Δεδοµένων 06-26
27 Παράδειγµα 3: Μετατροπή σε µεταθεµατική µορφή Μεταθεµατική αναπαράσταση Φυσικός τρόπος οργάνωσης σειράς υπολογισµών Χρησιµοποιείται και από την PostScript (παράδειγµα στο βιβλίο) Μετατροπή ενθεµατικής σε µεταθεµατική Είσοδος: µία παράσταση σε ενθεµατική µορφή Έξοδος: να τυπώσουµε την αντίστοιχη µεταθεµατική µορφή Ιδέα: χρησιµοποιούµε µία στοίβα χαρακτήρων για τους τελεστές. Όταν διαβάζουµε: Τελεστέο: εκτύπωση Τελεστή: push τελεστή στη στοίβα Αριστερή παρένθεση: δεν κάνουµε τίποτα Δεξιά παρένθεση: pop τελεστή και εκτύπωση Δοµές Δεδοµένων 06-27
28 Παράδειγµα 3: Μετατροπή σε µεταθεµατική µορφή Μετατροπή ενθεµατικής σε µεταθεµατική class InfixToPostfix { public static void main(string[] args) { char[] a = args[0].tochararray(); int N = a.length; charstack s = new charstack(n); for (int i = 0; i < N; i++) { if (a[i] == ')') Out.print(s.pop() + " "); if ((a[i] == '+') (a[i] == '*')) s.push(a[i]); if ((a[i] >= '0') && (a[i] <= '9')) Out.print(a[i] + " "); } Out.println(""); } } Δοµές Δεδοµένων 06-28
29 Παράδειγµα 4: Υπολογισµός αριθµητικής παράστασης Είσοδος: µία παράσταση σε µεταθεµατική µορφή Έξοδος: Υπολογισµός της τιµής της παράστασης Ιδέα: Χρησιµοποιούµε µία στοίβα ακεραίων για τους τελεστέους. Όταν διαβάζουµε: Τελεστέο: push τελεστέου Τελεστή: pop δύο τελεστέων, πράξη, push αποτελέσµατος Δοµές Δεδοµένων 06-29
30 Παράδειγµα 4: Υπολογισµός αριθµητικής παράστασης Υπολογισµός µεταθεµατικής παράστασης class Postfix { public static void main(string[] args) { char[] a = args[0].tochararray(); int N = a.length; intstack s = new intstack(n); for (int i = 0; i < N; i++) { if (a[i] == '+') s.push(s.pop() + s.pop()); if (a[i] == '*') s.push(s.pop() * s.pop()); if ((a[i] >= '0') && (a[i] <= '9')) /* Αν έχουµε >1 ψηφία θέλουµε κάτι σαν την Integer.parseint */ s.push(0); while((a[i] >= '0') && (a[i] <= '9')) s.push(10*s.pop() + (a[i++]-'0')); } Out.println(s.pop() + ""); } } Δοµές Δεδοµένων 06-30
31 Υλοποιήσεις στοίβας Υλοποίηση στοίβας µε πίνακα Υποθέτουµε στοίβα ακεραίων class intstack { private int[] s; private int N; //= αριθµός στοιχείων στη στοίβα intstack(int maxn) { s = new int[maxn]; N = 0; } boolean isempty() { return (N == 0); } void push(int item) { s[n++] = item; } int pop() { return s[--n]; }} Μεγέθυνση και σµίκρυνση Ιδανικά θα θέλαµε να έχουµε αυτόµατη αλλαγή µεγέθους Απλός κανόνας αλλαγής µεγέθους: Όταν ο πίνακας γεµίσει, τον διπλασιάζουµε Όταν ο πίνακας έχει πληρότητα κάτω του 25%, τον ηµιδιπλασιάζουµε Σε κάθε περίπτωση απαιτείται αντιγραφή στοιχείων Δοµές Δεδοµένων 06-31
32 Υλοποιήσεις στοίβας Υλοποίηση στοίβας µε λίστα Κόµβοι µε στοιχείο και δείκτη Διατηρούµε έναν δείκτη στην κεφαλή Push: εισάγει ένα στοιχείο στην αρχή Pop: αποµακρύνει ένα στοιχείο από την αρχή Σύγκριση υλοποιήσεων: Δεν απαιτείται µεγέθυνση και σµίκρυνση σε λίστες Η µεγέθυνση κοστίζει σε πίνακες Επιβάρυνση σε λίστες ο χειρισµός αναφορών Σε µνήµη και επεξεργασία Δοµές Δεδοµένων 06-32
33 Υλοποιήσεις στοίβας Υλοποίηση στοίβας µε λίστα class intstack { private Node head; private class Node { int item; Node next; Node(int item, Node next) { this.item = item; this.next = next; } } intstack(int maxn) { head = null; } boolean isempty() { return (head == null); } void push(int item) { head = new Node(item, head);} int pop() { int v = head.item; Node t = head.next; head = t; //head δείχνει στον επόµενο return v; } } Δοµές Δεδοµένων 06-33
34 Παρατηρήσεις Σχεδόν ίδιος κώδικας για στοίβες χαρακτήρων ή άλλων τύπων δεδοµένων Στην υλοποίηση µε λίστες η κατασκευάστρια µέθοδος αγνοεί την παράµετρό της Και στις 2 υλοποιήσεις, οι λειτουργίες push και pop γίνονται σε χρόνο Ο(1) (εκτός αν χρειαστεί να κάνουµε µεγέθυνση/ σµίκρυνση στην υλοποίηση µε πίνακες) Πρέπει πάντα να προσθέτουµε και τα κατάλληλα exceptions (π.χ. αν γίνει pop σε κενή στοίβα ή push σε γεµάτη στοίβα) Δοµές Δεδοµένων 06-34
35 Γενικές υλοποιήσεις Υλοποίηση στοίβας για διαχείριση οποιουδήποτε τύπου Χρήση του ίδιου κώδικα ως βάση Διαφοροποίηση µόνο του τύπου των στοιχείων Μπορούµε να εισάγουµε οποιοδήποτε αντικείµενο χρησιµοποιώντας τον τύπο Object Κληρονοµικότητα για µετατροπή σε άλλους τύπους class Stack { private Object[] s; private int N; Stack(int maxn) { s = new Object[maxN]; N = 0; } boolean isempty() { return (N == 0); } void push(object item) { s[n++] = item; } Object pop() { Object t = s[--n]; s[n] = null; return t; } } Δοµές Δεδοµένων 06-35
36 Γενικές υλοποιήσεις Περιορισµοί της χρήσης του τύπου Object Οι στοιχειώδεις τύποι θέλουν πρόσθετη µετατροπή µε χρήση κλάσεων περιτύλιξης (wrapper classes) Αντί για s.push(x) έχουµε s.push(new Integer(x)) Αντί για s.pop() έχουµε ((Integer) s.pop()).intvalue() Οι στοιχειώδεις τύποι επιβαρύνονται πολύ Αδυναµία εντοπισµού σφαλµάτων τύπου Δεν ελέγχονται οι τύποι των στοιχείων Apple a = new Apple(); Orange b = new Orange(); s.push(a); s.push(b);... a = ((Apple) s.pop()); //εξαίρεση b = ((Orange) s.pop()); - Προσοχή στις µετατροπές αντικειµένων!! Δοµές Δεδοµένων 06-36
37 Γενικές υλοποιήσεις Εναλλακτική λύση: Χρήση κλάσεων προσαρµογής (adapter classes) Μετατροπή της γενικής κλάσης Stack σε εξειδικευµένη Ρητή µετατροπή τύπων γίνεται στην υλοποίηση και όχι από τον πελάτη class intstack { } private Stack S; intstack(int maxn) { S = new Stack(maxN); } boolean isempty() { return S.isEmpty(); } void push(int item) { S.push(new Integer(item));} int pop() {return ((Integer) S.pop()).intValue();} Δοµές Δεδοµένων 06-37
38 Ουρές FIFO Αποµακρύνουµε πάντα το στοιχείο που έχει παραµείνει στην ουρά το µεγαλύτερο χρονικό διάστηµα Πράξεις ουράς Ορολογία: Get() ή Dequeue(): αποµάκρυνση του αντικειµένου που εισήχθη πρώτο Put() ή Enqueue(): εισαγωγή ενός αντικειµένου στην ουρά isempty(): είναι άδεια η ουρά; Δοµές Δεδοµένων 06-38
39 Ουρές FIFO Παραδείγµατα: Δροµολόγηση διεργασιών, δροµολόγηση σε δίκτυα Λίστες αναµονής Διεπαφή ουράς ακεραίων Δίνουµε και το µέγιστο µέγεθος class intqueue { intqueue(int) boolean isempty() void put(int) int get() } Δοµές Δεδοµένων 06-39
40 Ουρές FIFO Υλοποίηση ουράς µε λίστα Χρειαζόµαστε δύο δείκτες head: το παλιότερο στοιχείο Χρήση από την get() tail: το νεότερο στοιχείο Χρήση από την put() Δοµές Δεδοµένων 06-40
41 Ουρές FIFO Υλοποίηση ουράς µε λίστα class intqueue { private Node head, tail; private class Node { int item; Node next; Node(int item) { intqueue(int max) { this.item = item; next = null; } } head = null; tail = null; } boolean isempty() { return (head == null); } Δοµές Δεδοµένων 06-41
42 Ουρές FIFO Υλοποίηση ουράς µε λίστα void put(int item) { Node t = tail; tail = new Node(item); if (isempty()) head = tail; else t.next = tail; } int get() { int v = head.item; Node t = head.next; head = t; return v; } } Δοµές Δεδοµένων 06-42
43 Ουρές FIFO Υλοποίηση ουράς µε πίνακα Κοστίζει πολύ να µετακινούµε στοιχεία µέσα στον πίνακα Αντί αυτού θα µετακινούµε τους δείκτες head, tail Χρήση πίνακα N στοιχείων µε κυκλικό τρόπο Χρήση αριθµητικής modulo Τα στοιχεία της ουράς είναι από το head µέχρι το tail µε αναδίπλωση στο 0 head: δείχνει το πρώτο στοιχείο της ουράς, εκτός όταν head = N Πρώτα modulo και µετά αύξηση tail: δείχνει µετά το τελευταίο στοιχείο (εκεί που πρέπει να µπει το επόµενο) Πρώτα αύξηση και µετά modulo head % N == tail αν η ουρά είναι άδεια Πρέπει να προστεθεί και έλεγχος αν η ουρά είναι γεµάτη: (head 1) % N == tail Μεγέθυνση ουράς: αντιγραφή στοιχείων Δοµές Δεδοµένων 06-43
44 Ουρές FIFO Υλοποίηση ουράς µε πίνακα Μπορούµε να έχουµε και µέθοδο isfull() class intqueue { private int[] q; private int N, head, tail; intqueue(int maxn) { q = new int[maxn + 1]; N = maxn + 1; head = N; tail = 0; } boolean isempty() { return (head % N == tail); } void put(int item) { q[tail++] = item; tail = tail % N; } //όταν tail=n πάει στο 0 int get() { head = head % N; //αναδίπλωση όταν head = N return q[head++]; } } Δοµές Δεδοµένων 06-44
45 Αφηρηµένοι Τύποι Δεδοµένων Μέχρι τώρα έχουµε δει: Υλοποιήσεις ΑΤΔ στοίβας Υλοποιήσεις ΑΤΔ ουράς FIFO Σε κάθε πρόβληµα που έχουµε να λύσουµε είναι βολικό να υλοποιούµε ως ΑΤΔ τη δοµή που θα χρησιµοποιήσουµε Δοµές Δεδοµένων 06-45
46 Αφηρηµένοι Τύποι Δεδοµένων για προβλήµατα συνδετικότητας Στο Κεφάλαιο 1 είδαµε 4 αλγορίθµους για το πρόβληµα συνδετικότητας 1. Γρήγορη εύρεση 2. Γρήγορη ένωση 3. Σταθµισµένη γρήγορη ένωση 4. Σταθµισµένη γρήγορη ένωση µε συµπίεση µονοπατιών Αφαίρεση: όλοι οι παραπάνω αλγόριθµοι στηρίζονται σε λειτουργίες εύρεσης και ένωσης Δοµές Δεδοµένων 06-46
47 Αφηρηµένοι Τύποι Δεδοµένων για προβλήµατα συνδετικότητας Διασύνδεση για ΑΤΔ Union-Find: class UF { UF(int) boolean find(int, int) //βρίσκει αν συνδέονται 2 στοιχεία void unite(int, int) }//κανει την ένωση Υλοποίηση της διασύνδεσης στο βιβλίο Πρόγραµµα πελάτη: class connectivity { public static void main(string[] args) { int p, q, N = Integer.parseInt(args[0]); UF info = new UF(N); for (In.init();!In.empty(); ) { p = In.getInt(); q = In.getInt(); if (!info.find(p, q)) { info.unite(p, q); Out.println(p + "-" + q); } } } } Δοµές Δεδοµένων 06-47
48 Διασυνδέσεις ΑΤΔ Τι µηχανισµούς παρέχει η Java για το διαχωρισµό υλοποίησης/ προγραµµάτων πελάτη? 1. abstract κλάσεις Δηµόσιες µέθοδοι µιας abstract κλάσης πρέπει να επανοριστούν σε µια extended κλάση που θα κάνει την υλοποίηση 2. Interfaces Στο παράδειγµά µας µπορούµε να έχουµε: interface uf { boolean find(int p, int q); void unite(int p, int q); } Τότε η κλάση UF πρέπει να δηλωθεί ως: class UF implements uf Δεν επιτρέπονται constructors µέσα σε ορισµό interface Δοµές Δεδοµένων 06-48
49 Δοµές Δεδοµένων Εφαρµογή: ΑΤΔ για πολυώνυµα Εφαρµογή: Symbolic Mathematics. Προγράµµατα σαν τα Matlab, Mathematica, Maple χρησιµοποιούν µεθόδους για διαχείριση πολυωνύµων Συµβολική επεξεργασία, π.χ.: Θέλουµε µεθόδους για Πρόσθεση πολυωνύµων Πολλαπλασιασµό πολυωνύµων Αποτίµηση ενός πολυωνύµου σε συγκεκριµένη τιµή του x ( ) x x x x x x x x x x x =
50 Εφαρµογή: ΑΤΔ για πολυώνυµα Διασύνδεση ΑΤΔ: class Poly { // υλοποιήσεις και ιδιωτικά µέλη κρυµµένα } Poly(int, int) //φτιάχνει το πολυώνυµο cx N double eval(double) //αποτίµηση void add(poly) //πρόσθεση πολυωνύµων void mult(poly) //πολλαπλασιασµός Δοµές Δεδοµένων 06-50
51 Εφαρµογή: ΑΤΔ για πολυώνυµα Πρόγραµµα υλοποίησης: Θα δούµε την eval (υπόλοιπες µέθοδοι στο βιβλίο) Εσωτερική αναπαράσταση πολυωνύµου βαθµού Ν: πίνακας Ν+1 στοιχείων µε τους συντελεστές Αποτίµηση πολυωνύµου, Απλοϊκή µέθοδος: Ο(Ν 2 ) πολλαπλ/µοί Αλγόριθµος του Horner: Ο(Ν) ((( a ) ) ) 4x + a3 x + a2 x + a1 x 0 a x + a3x + a2x + a1x + a0 = a Δοµές Δεδοµένων 06-51
52 Εφαρµογή: ΑΤΔ για πολυώνυµα class Poly { private int n; //βαθµός πολυωνύµου + 1 private int[] a; //συντελεστές } Poly(int c, int N) { //δηµιουργεί το πολυώνυµο cx N a = new int[n+1]; n = N+1; a[n] = c; for (int i = 0; i < N; i++) a[i] = 0; } double eval(double d) { //υπολογισµός της double t = 0.0; //τιµής στο d for (int i = n-1; i >= 0; i--) t = t*d + (double) a[i]; return t; } Δοµές Δεδοµένων 06-52
53 Εφαρµογή: ΑΤΔ για πολυώνυµα Παράδειγµα προγράµµατος πελάτη: Έστω ότι θέλουµε να υπολογίζουµε τις εκφράσεις (x+1) N, π.χ. (x+1) 2 = x 2 + 2x + 1 (x+1) 4 = x 4 + 4x 3 + 6x 2 + 4x + 1 public class Binomial { //υπολογισµός (x+1) N public static void main(string[] args) { int N = Integer.parseInt(args[0]); double p = Double.parseDouble(args[1]); Poly y = new Poly(1, 0); //y=1 Poly t = new Poly(1, 0); //t=1 t.add(new Poly(1, 1)); //t = x+1 for (int i = 0; i < N; i++) y.mult(t); //y = (x+1) i+1 Out.println("value: " + y.eval(p)); } Δοµές Δεδοµένων 06-53
54 ΑΤΔ - Σύνοψη Επιτρέπουν το χτίσιµο επιπέδων αφαίρεσης Διαχωρισµός µεταξύ πελάτη και υλοποίησης Διευκολύνουν τη σχεδίαση modular programming Επαναχρησιµοποίηση κώδικα Βολικός µηχανισµός για τη σύγκριση αλγορίθµων Δοµές Δεδοµένων 06-54
Δοµές Δεδοµένων. 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης
Δοµές Δεδοµένων 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Στοίβα ώθησης προς τα κάτω Παραδείγµατα πελατών για στοίβες Υλοποιήσεις στοίβας µε πίνακες και λίστες Γενικές υλοποιήσεις Ουρές
Διαβάστε περισσότεραΔοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης
Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα
Διαβάστε περισσότεραΣυλλογές, Στοίβες και Ουρές
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει
Διαβάστε περισσότεραΔοµές Δεδοµένων. 8η Διάλεξη: Ταξινόµηση. Ε. Μαρκάκης
Δοµές Δεδοµένων 8η Διάλεξη: Ταξινόµηση Ε. Μαρκάκης Υπενθύµιση Εργαστήρια την επόµενη εβδοµάδα Πρόγραµµα εργαστηρίων αναρτηµένο στο eclass Εργασία 1 θα αναρτηθεί την Τρίτη, παράδοση 20/11 Δοµές Δεδοµένων
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Δοµικά στοιχεία Πίνακες Το κόσκινο του Ερατοσθένη Αντιγραφή πινάκων
Διαβάστε περισσότεραΔοµές Δεδοµένων. 3η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες. Ε. Μαρκάκης
Δοµές Δεδοµένων 3η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες Ε. Μαρκάκης Αλλαγή αίθουσας Τις Παρασκευές 1-3, το µάθηµα θα γίνεται στη Δ23 Δοµές Δεδοµένων 03-2 Περίληψη Σύνοψη 1 ου κεφαλαίου Δοµικά
Διαβάστε περισσότεραΔιάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -
Διαβάστε περισσότεραOι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:
3 ΣTOIBEΣ KAI OYPEΣ 3.1 ΣΤΟΙΒΕΣ Στοίβα (stack) είναι µία λίστα στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Συχνά µία στοίβα αναφέρεται
Διαβάστε περισσότεραΤύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )
Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική
Διαβάστε περισσότεραΒασικές Έννοιες Δοµών Δεδοµένων
Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες
Διαβάστε περισσότεραΔιάλεξη 05: Αφηρημένοι Τύποι Δεδομένων
Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων
Διαβάστε περισσότεραΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα
Διαβάστε περισσότεραΔοµές Δεδοµένων. 2η Διάλεξη Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Ε. Μαρκάκης. Βασίζεται στις διαφάνειες των R. Sedgewick K.
Δοµές Δεδοµένων 2η Διάλεξη Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Ε. Μαρκάκης Βασίζεται στις διαφάνειες των R. Sedgewick K. Wayne Περίληψη Συνδετικότητα δικτύου Αφαιρέσεις Συνδεδεµένα συστατικά Αφηρηµένη
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:
Διαβάστε περισσότεραΔομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.
Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ
Διαβάστε περισσότεραΠεριεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5
Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Πίνακες Συµβόλων Κεφάλαιο 12 ( ) Ε. Μαρκάκης Επίκουρος Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Πίνακες Συµβόλων Κεφάλαιο 12 (12.1-12.4) Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Πίνακες συµβόλων Διεπαφή πίνακα συµβόλων Αναζήτηση µε αριθµοδείκτη Ακολουθιακή αναζήτηση Δυαδική αναζήτηση
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 4 ο Στοίβα Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Στοίβα Υλοποίηση µε Πίνακα Υλοποίηση
Διαβάστε περισσότεραΑπλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή
Απλές Δοµές Δεδοµένων Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος
Διαβάστε περισσότεραΔοµές Δεδοµένων. 4η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες και Λίστες. Ε. Μαρκάκης
Δοµές Δεδοµένων 4η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες και Λίστες Ε. Μαρκάκης Εργαστήρια Ώρες εργαστηρίων Τέσσερα τµήµατα εργαστηρίων XXXX001-XXXX060, Δευτέρα 09:00-11:00 (CSLAB II) XXXX061-XXXX120,
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Κεφάλαιο 1. Ε. Μαρκάκης Επικ. Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Κεφάλαιο 1 Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Συνδετικότητα δικτύου Αφαιρέσεις (abstractions) Αφηρηµένη ένωση-εύρεση 1. Γρήγορη εύρεση 2. Γρήγορη
Διαβάστε περισσότεραΔομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές
Διαβάστε περισσότεραΚλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack
Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2
Διαβάστε περισσότεραΚλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1
Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2
Διαβάστε περισσότεραΟι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται
Διαβάστε περισσότεραΚεφάλαιο 5 Συλλογές, Στοίβες και Ουρές
Κεφάλαιο 5 Συλλογές, Στοίβες και Ουρές Περιεχόμενα 5.1 Αφηρημένοι τύποι δεδομένων... 94 5.2 Συλλογές και Επαναλήπτες... 95 5.1.1 Εφαρμογή: Υλοποίηση λιστών γειτνίασης γραφήματος... 96 5.2 Στοίβα... 97
Διαβάστε περισσότεραΣτοιχειώδεις Δομές Δεδομένων
Στοιχειώδεις Δομές Δεδομένων Τύποι δεδομένων στη Java Ακέραιοι (int, long) Αριθμοί κινητής υποδιαστολής (float, double) Χαρακτήρες (char) Δυαδικοί (boolean) Από τους παραπάνω μπορούμε να φτιάξουμε σύνθετους
Διαβάστε περισσότερα1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι
1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της
Διαβάστε περισσότεραΔοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης
Δοµές Δεδοµένων 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι Ε. Μαρκάκης Περίληψη Bubble Sort Selection Sort Insertion Sort Χαρακτηριστικά επιδόσεων Shellsort Ταξινόµηση συνδεδεµένων λιστών Δοµές Δεδοµένων
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Λίστες Κεφάλαιο 3 (3.3, 3.4, 3.7) Ε. Μαρκάκης Επικ. Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Στοιχειώδεις Δοµές Δεδοµένων Λίστες Κεφάλαιο 3 (3.3, 3.4, 3.7) Ε. Μαρκάκης Επικ. Καθηγητής Ενηµέρωση 5ο τµήµα Εργαστηρίων Τετάρτη 11-1 Δοµές Δεδοµένων 04-2 Περίληψη Συνδεδεµένες λίστες
Διαβάστε περισσότεραΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,
Εφαρµογές στοιβών Στην ενότητα αυτή θα µελετηθεί η χρήση στοιβών στις εξής εφαρµογές: Αναδροµικές συναρτήσεις Ισοζυγισµός Παρενθέσεων Αντίστροφος Πολωνικός Συµβολισµός ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι
Διαβάστε περισσότεραΔοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης
Δοµές Δεδοµένων 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων Ε. Μαρκάκης Περίληψη Quicksort Χαρακτηριστικά επιδόσεων Μη αναδροµική υλοποίηση Δέντρα Μαθηµατικές ιδιότητες Δοµές Δεδοµένων 11-2
Διαβάστε περισσότεραΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1
Εφαρμογές στοιβών Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων Αντίστροφος Πολωνικός Συμβολισμός ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι
Διαβάστε περισσότεραΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής
Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ
Διαβάστε περισσότεραΔομές Δεδομένων. Δημήτρης Μιχαήλ. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Δομές Δεδομένων Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Βιβλιογραφία Robert Sedgewick, Αλγόριθμοι σε C, Μέρη 1-4 (Θεμελιώδεις Έννοιες, Δομές Δεδομένων, Ταξινόμηση,
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Διαβάστε περισσότεραΗ στοίβα (stack) H στοίβα είναι ένας αποθηκευτικός χώρος οργανωµένος κατά τέτοιο τρόπο ώστε να υποστηρίζει δύο βασικές λειτουργίες:
Άσκηση 5Α_5 26/3/2003 11.5. Άσκηση 5A - [αναγνώριση αντικειµένων-διάγραµµα κλάσεων] [Σε αντικατάσταση της άσκησης 5 του κεφαλαίου 11] 11.5.1. Περιγραφή Η άσκηση αυτή είναι η πρώτη από µία σειρά ασκήσεων
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Λίστες Κεφάλαιο 3 (3.3, 3.4, 3.7) Ε. Μαρκάκης Επικ. Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Στοιχειώδεις Δοµές Δεδοµένων Λίστες Κεφάλαιο 3 (3.3, 3.4, 3.7) Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Συνδεδεµένες λίστες είδη λιστών Παραδείγµατα µε επεξεργασία λιστών Συµβάσεις αρχής και
Διαβάστε περισσότεραΔοµές Δεδοµένων. 13η Διάλεξη Πίνακες Συµβόλων. Ε. Μαρκάκης
Δοµές Δεδοµένων 13η Διάλεξη Πίνακες Συµβόλων Ε. Μαρκάκης Ο αλγόριθµος heapsort Παράδειγµα ταξινόµησης µε σωρό Δηµιουργία σωρού (σε µορφή δέντρου) Τα στοιχεία ταξινοµούνται µερικώς Ταξινόµηση µε βάση το
Διαβάστε περισσότεραΔοµές Δεδοµένων. 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης. Ε. Μαρκάκης
Δοµές Δεδοµένων 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης Ε. Μαρκάκης Περίληψη Δέντρα Δυαδικής Αναζήτησης Υλοποιήσεις εισαγωγής και αναζήτησης Χαρακτηριστικά επιδόσεων ΔΔΑ Εισαγωγή στη ρίζα ΔΔΑ Υλοποιήσεις
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων
Διαβάστε περισσότεραΤµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών
Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2016 Δοµές Δεδοµένων - Εργασία 1 Διδάσκων: E. Μαρκάκης Στοίβες και Ουρές Σκοπός της εργασίας είναι η εξοικείωση µε βασικούς αφηρηµένους
Διαβάστε περισσότεραΣτοίβες με Δυναμική Δέσμευση Μνήμης
ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές
Διαβάστε περισσότεραΣύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).
Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Πίνακες Εισαγωγή, σε χρόνο O(1). Αναζήτηση, σε χρόνο O(n).
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Εξωτερική Αναζήτηση και Β-δέντρα Κεφάλαιο 16. Ε. Μαρκάκης Επίκουρος Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εξωτερική Αναζήτηση και Β-δέντρα Κεφάλαιο 16 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Ακολουθιακή πρόσβαση Β-δέντρα Υλοποίηση πίνακα συµβόλων µε Β-δέντρα Αναζήτηση Εισαγωγή Δοµές Δεδοµένων
Διαβάστε περισσότεραΔοµές Δεδοµένων. 5η Διάλεξη Λίστες και αρχές ανάλυσης αλγορίθµων. Ε. Μαρκάκης
Δοµές Δεδοµένων 5η Διάλεξη Λίστες και αρχές ανάλυσης αλγορίθµων Ε. Μαρκάκης Περίληψη Διπλά συνδεδεµένες λίστες Αναπαράσταση γράφων µε λίστες Εµπειρική ανάλυση αλγορίθµων Μαθηµατική ανάλυση αλγορίθµων Αύξηση
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις Παράδειγμα κληρονομικότητας Έχουμε ένα σύστημα διαχείρισης εισιτηρίων μιας συναυλίας. Το κάθε εισιτήριο έχει
Διαβάστε περισσότεραΟυρά Προτεραιότητας (priority queue)
Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει δύο βασικές λειτουργίες : Εισαγωγή στοιχείου με δεδομένο κλειδί. Επιστροφή ενός στοιχείου με μέγιστο (ή ελάχιστο) κλειδί και διαγραφή
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 (5.1-5.2 και 5.4-5.6) Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Δέντρα Βασικοί ορισµοί Μαθηµατικές ιδιότητες Διάσχιση δέντρων Preorder, postorder,
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο
Διαβάστε περισσότεραpublic class ArrayStack implements Stack {
public class ArrayStack implements Stack { private static final int DEF_STACK_SIZE=2; //Array of objects private Object[] S; private int index ; // index, top, last, position // Returns the last item of
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ουρές προτεραιότητας Κεφάλαιο 9 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Ουρές προτεραιότητας Στοιχειώδεις υλοποιήσεις Δοµή δεδοµένων σωρού Αλγόριθµοι σε σωρούς Ο αλγόριθµος heapsort Δοµές
Διαβάστε περισσότεραΔιάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές
Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες
Διαβάστε περισσότεραΓράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 1 2 3 4 5 πλήθος κορυφών πλήθος ακμών Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Ένα ιστόγραμμα τιμών μετράει για ένα σύνολο από τιμές πόσες φορές εμφανίστηκε η κάθε τιμή. Για παράδειγμα
Διαβάστε περισσότεραΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων
ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Πτυχιακή Εξεταστική Ιούλιος 2014 Διδάσκων : Ευάγγελος Μαρκάκης 09.07.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραυναµικές οµές εδοµένων
υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση
Διαβάστε περισσότεραΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί
Διαβάστε περισσότεραΔοµές Δεδοµένων. 16η Διάλεξη Κατακερµατισµός. Ε. Μαρκάκης
Δοµές Δεδοµένων 16η Διάλεξη Κατακερµατισµός Ε. Μαρκάκης Περίληψη Συναρτήσεις κατακερµατισµού Χωριστή αλυσίδωση Γραµµική διερεύνηση Διπλός κατακερµατισµός Δυναµικός κατακερµατισµός Προοπτική Δοµές Δεδοµένων
Διαβάστε περισσότεραΚατασκευαστές. Μέθοδοι Κατασκευής (Constructors).
Κατασκευαστές Μέθοδοι Κατασκευής (Constructors). Οι κατασκευαστές (constructors) είναι μέθοδοι που εκτελούνται όταν κατασκευάζεται ένα αντικείμενο. Μια τάξη μπορεί να έχει αρκετούς κατασκευαστές, οι οποίοι
Διαβάστε περισσότεραΟικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο 2015. Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης
Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2015 Δοµές Δεδοµένων - Εργασία 2 Διδάσκων: E. Μαρκάκης Ταξινόµηση και Ουρές Προτεραιότητας Σκοπός της 2 ης εργασίας είναι η εξοικείωση
Διαβάστε περισσότεραΑνάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ οµηµένος Προγραµµατισµός Ανοιξη 5 Μάθηµα 5 ο Ουρά Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Ουρά Υλοποίηση µε Κυκλικό Πίνακα Υλοποίηση
Διαβάστε περισσότερα4. Συνδεδεμένες Λίστες
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 4. Συνδεδεμένες Λίστες 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 10/11/2016 Εισαγωγή
Διαβάστε περισσότεραΑναδρομικοί Αλγόριθμοι
Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας
Διαβάστε περισσότεραΟι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες
Δομές δεδομένων Πίνακες Οι πίνακες είναι το πιο απλό «μέσο» αποθήκευσης ομοειδούς πληροφορίας. Χρησιμοποιούν ακριβώς όση μνήμη χρειάζεται για την αποθήκευση της πληροφορίας Επιτρέπουν την προσπέλαση άμεσα
Διαβάστε περισσότεραWrapper Classes, Abstract Classes and Interfaces
Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους
Διαβάστε περισσότεραΣύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης
Σύνοψη Προηγούμενου Λίστες (Lists) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Στοίβες (Stacks) : στην κορυφή της στοίβας ( ) από την κορυφή της στοίβας ( ) Ουρές
Διαβάστε περισσότεραΔιάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή
Διαβάστε περισσότεραΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ουρές προτεραιότητας Κεφάλαιο 9 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Ουρές προτεραιότητας Στοιχειώδεις υλοποιήσεις Δοµή δεδοµένων σωρού Αλγόριθµοι σε σωρούς Ο αλγόριθµος heapsort Δοµές
Διαβάστε περισσότερα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
Κεφάλαιο 2 Δοµές Δεδοµένων Ι Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε
Διαβάστε περισσότεραΒασικές Δομές Δεδομένων
Βασικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Διαδοχική και Δυναμική Χορήγηση
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Αντικείμενα μέσα σε αντικείμενα Ορίζουμε κλάσεις για να ορίσουμε τύπους δεδομένων τους οποίους χρειαζόμαστε Π.χ., ο τύπος δεδομένων Date
Διαβάστε περισσότεραΔιάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες
Διαβάστε περισσότεραΚλάσεις και Αντικείµενα
Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων
ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Σχετικές έννοιες 8.3 Υλοποίηση δοµών δεδοµένων 8.4 Μια σύντοµη µελέτη περίπτωσης 8.5 Προσαρµοσµένοι τύποι δεδοµένων 1 Βασικές δοµές
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις Στατικές μέθοδοι Τι σημαίνει το keyword static στον ορισμό της main μεθόδου? Τι είναι μια στατική μέθοδος?
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις Συλλογές Από το προηγούμενο lab Είχαμε την κλάση Document, και δύο παραγόμενες κλάσεις: TextFile, Email Document
Διαβάστε περισσότεραιαφάνειες παρουσίασης #11
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης
Διαβάστε περισσότεραΣτοίβες. ΟΑΤ της Στοίβας. Περιγραφή και Υλικό Ανάγνωσης. Αφηρηµένοι Τύποι εδοµένων (AΤ )
Περιγραφή και Υλικό Ανάγνωσης Στοίβες ΟΑφηρηµένος Τύπος εδοµένων της Στοίβας (tack Abstract Data Type (ADT)) (..) Εφαρµογές για Στοίβες (..) Υλοποίηση µε βάση πίνακες (..) Στοίβα βασισµένη σε πίνακα η
Διαβάστε περισσότερα2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων
2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει
Διαβάστε περισσότεραΔομές Δεδομένων και Αλγόριθμοι
Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 14 Στοίβες 1 / 14 Στοίβες Η στοίβα είναι μια ειδική περίπτωση γραμμικής λίστας στην οποία οι εισαγωγές
Διαβάστε περισσότεραΒασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας
ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας
Διαβάστε περισσότεραΚλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων
Κλάσεις Τροποποιητές, ιασυνδέσεις, Πακέτα Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων Υπάρχουν 4τροποποιητές: default, public, private, protected. Default: εν προηγείται τροποποιητής του ονόµατος
Διαβάστε περισσότεραΒασικές οµές εδοµένων
Βασικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αφηρηµένοι Τύποι εδοµένων Οι ΑΤ Στοίβα και Ουρά Υλοποίηση των ΑΤ Στοίβα και Ουρά µε ιαδοχική και υναµική Χορήγηση Μνήµης
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Στην άσκηση αυτή θα υλοποιήσετε μια κλάση RandomVector η οποία διαχειρίζεται ένα τυχαίο διάνυσμα ακεραίων το οποίο μπορεί να έχει οποιοδήποτε
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-1 ) 16η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υλοποίηση στοίβας ακεραίων με χρήση τάξεων, δυναμικής καταχώρισης μνήμης
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι
Διαβάστε περισσότεραΔηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ
Δοµές Δεδοµένων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ public class LinkedStack //implements Stack // Υλοποίηση στοίβας
Διαβάστε περισσότεραSheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών.
Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ Δεν κάνει compile και το λάθος είναι σηµαντικό: Το head1 είναι δείκτης σε struct, εποµένως η προσπέλαση πεδίου γίνεται 321 FAIL µε head1->next και όχι head1.next. Επιπλέον, έχετε λάθος
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 15: Σχεδίαση Εφαρμογών Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΔομές Δεδομένων. Λουκάς Γεωργιάδης. http://www.cs.uoi.gr/~loukas/courses/data_structures/ email: loukas@cs.uoi.gr
Δομές Δεδομένων http://www.cs.uoi.gr/~loukas/courses/data_structures/ Λουκάς Γεωργιάδης email: loukas@cs.uoi.gr Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δεδομένα: Σύνολο από πληροφορίες που
Διαβάστε περισσότερα