Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).
|
|
- Καρπός Γούσιος
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας Ορέστης Τελέλης Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Πίνακες Εισαγωγή, σε χρόνο O(1). Αναζήτηση, σε χρόνο O(n). Διαγραφή, σε χρόνο O(n) (απαιτεί αναζήτηση). Αναπαράσταση Υποσυνόλου n συνεχόμενων ακεραίων (π.χ., 0, 1, 2,..., n 1): Εισαγωγή, Διαγραφή, Αναζήτηση σε χρόνο O(1). Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 1 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 2 / 56 Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα Ταξινομημένοι Πίνακες Δυαδική Αναζήτηση, σε χρόνο O(log n). Εισαγωγή, σε χρόνο O(n). Απαιτεί: Δυαδική Αναζήτηση για εντοπισμό θέσης εισαγωγής χρόνος: O(log n). Μετακίνηση O(n) στοιχείων κατά μία θέση χρόνος: O(n). Εγγραφή νέου στοιχείου στην κενή θέση που προκύπτει χρόνος: O(1). Διαγραφή, σε χρόνο O(n). Στοίβα Ουρά Υλοποίηση με πίνακα Υλοποίηση με πίνακα «Αναδιπλούμενοι» (κυκλικοί) πίνακες Ουρά Προτεραιότητας (Μη αποδοτική) Υλοποίηση με ταξινομημένο πίνακα Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 3 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 4 / 56
2 Περιορισμένη Προσπέλαση Πιο Αφηρημένες Δομές Οι στοίβες και οι ουρές ορίζουν μόνο δύο βασικές πράξεις: Εισαγωγή στοιχείου. Απομάκρυνση στοιχείου, που προδιαγράφεται από τη λειτουργία τους. Το απομακρυνόμενο στοιχείο επιβάλλεται από τη διεπαφή τους. Δεν προβλέπεται η διαγραφή/απομάκρυνση στοιχείου της επιλογής μας. Σε αντιδιαστολή με τους πίνακες. Δεν ορίζουν αναζήτηση στοιχείου: Ομως αυτή μπορεί να ενσωματωθεί σε μία υλοποίηση. Οι στοίβες και οι ουρές είναι πιο αφηρημένες δομές από τους πίνακες. Ορίζονται ουσιαστικά από τη διεπαφή (interface) τους. Ο εσωτερικός μηχανισμός υλοποίησης δεν είναι ορατός στο χρήστη. Παράδειγμα. Μία στοίβα ή μία ουρά μπορεί να υλοποιηθεί με: διαχείριση ενός πίνακα, συνδεδεμένη λίστα (επόμενο μάθημα) Και θα είναι αναγκαστικά «γραμμικού τύπου» O(n) χρόνου. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 5 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 6 / 56 Αναλογία με Φυσικό Κόσμο Στοίβες Stacks Στοίβα Ταχυδρομικών επιστολών. Εξέταση των επιστολών από πάνω προς τα κάτω. Στοίβα Πιάτων Πλύσιμο των πιάτων από πάνω προς τα κάτω. Βασικές ενέργειες μιας στοίβας. push: Τοποθέτηση στοιχείου στην κορυφή της στοίβας. pop: Απομάκρυνση στοιχείου από την κορυφή της στοίβας. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 7 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 8 / 56
3 Στοίβα (Stack) Μερικές Εφαρμογές Στοιβών LIFO (Last In, First Out) δομή δεδομένων. H στοίβα περιορίζει την προσπέλαση στo στοιχείο που εισήχθη πιο πρόσφατα. Η δομή στοίβα μπορεί να υλοποιηθεί με x = top έναν πίνακα και y έναν δείκτη στο στοιχείο της κορυφής της. Ελεγχος ισορροπίας παρενθέσεων και αγκύλων σε μία έκφραση. Συντακτική ανάλυση εκφράσεων, όπως 3 (4 + 5). Βοηθητική δομή για αλγόριθμους εξέτασης κόμβων δέντρου ή αναζητήσεις στις κορυφές ενός γράφου. Αρχιτεκτονική μικροεπεξεργαστών στηρίζεται στη χρήση στοίβας. Υπολογιστές τσέπης. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 9 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 10 / 56 Παράδειγμα Λειτουργιών Στοίβας Υλοποίηση Στοίβας Βασίζεται στη διαχείριση των παρακάτω αντικειμένων: push(10) push(5) pop() push(15) push(7) pop() top τύπου int «Δείκτης» στην κορυφή της στοίβας stackarray τύπος πίνακα Πίνακας αποθήκευσης στοιχείων της στοίβας Σημείωση: Είναι βολικό να έχουμε top= 1, για την κενή στοίβα. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 11 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 12 / 56
4 Υλοποίηση Στοίβας Αντικειμένων (1/3) c l a s s S t a c k { p r i v a t e O b j e c t [ ] s t a c k A r r a y ; p r i v a t e i n t top ; // top of s t a c k p u b l i c S t a c k ( i n t s ) { // c o n s t r u c t o r s t a c k A r r a y = new O b j e c t [ s ] ; // c r e a t e a r r a y top = 1; // no items yet // t r u e i f s t a c k empty ( e l s e : f a l s e ) p u b l i c boolean isempty ( ) { r e t u r n ( top == 1) ; // t r u e i f s t a c k i s f u l l ( e l s e : f a l s e ) p u b l i c boolean i s F u l l ( ) { r e t u r n ( top == s t a c k A r r a y. l e n g t h 1) ; // peek at top of s t a c k p u b l i c O b j e c t peek ( ) { i f (! isempty ( ) ) r e t u r n s t a c k A r r a y [ top ] ; r e t u r n ( n u l l ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 13 / 56 Υλοποίηση Στοίβας Αντικειμένων (2/3) // put data on top p u b l i c boolean push ( O b j e c t data ) { i f (! t h i s. i s F u l l ( ) ) { s t a c k A r r a y [++ top ] = data ; r e t u r n ( t r u e ) ; r e t u r n ( f a l s e ) ; // read data on top, decrement top, r e t u r n data p u b l i c O b j e c t pop ( ) { i f (! t h i s. isempty ( ) ) { O b j e c t data = s t a c k A r r a y [ top ] ; s t a c k A r r a y [ top ] = n u l l ; r e t u r n ( data ) ; r e t u r n ( n u l l ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 14 / 56 Σχόλια Υλοποίηση Στοίβας Αντικειμένων (3/3) Η πράξη peek πλεονάζει θεωρητικά, αλλά βολεύει στην πράξη: Μπορεί να υλοποιηθεί με pop ακολουθούμενη από push: O b j e c t data = s t a c k. pop ( ) ; s t a c k. push ( data ) ; /* do something with data */ Παρατηρήστε τον συνεπή χειρισμό «σφαλμάτων» σε κάθε πράξη. Πράξη Επιστρέφει Περίπτωση push επιστρέφει true/ false για επιτυχή/ανεπιτυχή εισαγωγή pop επιστρέφει null όταν η στοίβα είναι άδεια peek επιστρέφει null όταν η στοίβα είναι άδεια c l a s s StackApp { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { S t a c k s t a c k = new S t a c k ( 1 0 ) ; // make s t a c k s t a c k. push ( new I n t e g e r ( 2 0 ) ) ; // push items s t a c k. push ( new I n t e g e r ( 4 0 ) ) ; s t a c k. push ( new I n t e g e r ( 6 0 ) ) ; s t a c k. push ( new I n t e g e r ( 8 0 ) ) ; while (! s t a c k. isempty ( ) ) { I n t e g e r data = ( I n t e g e r ) s t a c k. pop ( ) ; System. out. p r i n t ( data. i n t V a l u e ( ) ) ; System. out. p r i n t ( ) ; System. out. p r i n t l n ( ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 15 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 16 / 56
5 Σχόλια Παρατήρηση: για να εισάγουμε ακέραιο χρησιμοποιούμε την κλάση Integer Κλάση της Java για ενθυλάκωση ακεραίου int σε αντικείμενο. Υπάρχουν επίσης οι: Long, Bool, Character, Float, Double, Μία για κάθε βασικό τύπο της γλώσσας. Αυτό εξυπηρετεί κυρίως τη συνέπεια στον χειρισμό «σφαλμάτων»: Εστω ότι αποθηκεύουμε ακεραίους στη στοίβα. Εστω ότι οι peek και pop επιστρέφουν int. Αν όμως η στοίβα είναι άδεια τί πρέπει να επιστρέφουν? Γι αυτό επιλέχθηκε να επιστρέφουν αντικείμενο ή null. Πώς υλοποιούμε στοίβα που επιβάλλει αποθήκευση τύπου ακεραίων? Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 17 / 56 Υλοποίηση Στοίβας Ακεραίων (1/2) c l a s s L o n g S t a c k { p r i v a t e long [ ] s t a c k A r r a y ; p r i v a t e i n t top ; // top of s t a c k p u b l i c L o n g S t a c k ( i n t s ) { // c o n s t r u c t o r s t a c k A r r a y = new long [ s ] ; // c r e a t e a r r a y top = 1; // no items yet // t r u e i f s t a c k empty ( e l s e : f a l s e ) p u b l i c boolean isempty ( ) { r e t u r n ( top == 1) ; // t r u e i f s t a c k i s f u l l ( e l s e : f a l s e ) p u b l i c boolean i s F u l l ( ) { r e t u r n ( top == s t a c k A r r a y. l e n g t h 1) ; // peek at top of s t a c k p u b l i c Long peek ( ) { i f (! isempty ( ) ) r e t u r n ( new Long ( s t a c k A r r a y [ top ] ) ) ; r e t u r n ( n u l l ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 18 / 56 Υλοποίηση Στοίβας Ακεραίων Παράδειγμα Εφαρμογής Στοίβας // put data on top p u b l i c boolean push ( long data ) { i f (! t h i s. i s F u l l ( ) ) { s t a c k A r r a y [++ top ] = data ; r e t u r n ( t r u e ) ; r e t u r n ( f a l s e ) ; Οι μεταγλωττιστές (compilers) χρειάζεται να ελέγχουν εάν υπάρχει ισορροπία στα σύμβολα σε διάφορες εκφράσεις. «(» πρέπει να ταιριαστεί με «)». «[» πρέπει να ταιριαστεί με «]». «/*» πρέπει να ταιριαστεί με «*/», κ.λ.π. // read data on top, decrement top, r e t u r n data p u b l i c Long pop ( ) { i f (! t h i s. isempty ( ) ) r e t u r n ( new Long ( s t a c k A r r a y [ top ]) ) ; r e t u r n ( n u l l ) ; Παραδείγματα μη ταιριασμάτων: a = b + ( c d ) * ( e f ) ; // E x t r a )!!! while ( m < ( n [ 8 ] + a ) { // ) i s m i s s i n g!!! /* */ Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 19 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 20 / 56
6 Αλγόριθμος Balance Checker (1/2) Αλγόριθμος Balance Checker (2/2) p u b l i c s t a t i c boolean c h e c k B a l a n c e ( S t r i n g expr ) { /* i f r i g h t p a r e n t h e s i s ( continued ) : */ S t a c k s t a c k = new S t a c k ( expr. l e n g t h ( ) ) ; // i n i t i a l i z e s t a c k char [ ] c a r r = expr. t o C h a r A r r a y ( ) ; // i n p u t => char a r r a y f o r ( i n t i = 0 ; i < c a r r. l e n g t h ; i + + ) { // f o r each c h a r a c t e r // i f l e f t kind of p a r e n t h e s i s, wrap i t i n // C h a r a c t e r o b j e c t and push i t i n the s t a c k i f ( c a r r [ i ] == ( c a r r [ i ] == [ c a r r [ i ] == { ) s t a c k. push ( new C h a r a c t e r ( c a r r [ i ] ) ) ; // i f popped value matches with read c h a r a c t e r, // as l e f t and r i g h t, c o n t i n u e with next c h a r a c t e r. i f ( ( d a t a V a l u e == { && c a r r [ i ] == ) ( d a t a V a l u e == ( && c a r r [ i ] == ) ) ( d a t a V a l u e == [ && c a r r [ i ] == ] ) ) c o n t i n u e ; e l s e r e t u r n ( f a l s e ) ; // else, not balanced // i f some r i g h t kind of p a r e n t h e s i s : i f ( c a r r [ i ] == ) c a r r [ i ] == ] c a r r [ i ] == ) { C h a r a c t e r data = ( C h a r a c t e r ) s t a c k. pop ( ) ; // pop an o b j e c t i f ( data == n u l l ) r e t u r n ( f a l s e ) ; // none found? char d a t a V a l u e = data. c h a r V a l u e ( ) ; // unwrap value // A l l l e f t k i n d s of p a r e n t h e s i s pushed i n the s t a c k // must have been matched with t h e i r r i g h t mates. i f ( s t a c k. isempty ( ) ) r e t u r n ( t r u e ) ; r e t u r n ( f a l s e ) ; // otherwise, not balanced Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 21 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 22 / 56 Παράδειγμα Εφαρμογής «Balance Checker» Παράδειγμα Εφαρμογής «Balance Checker» S = t[5] + (a (c + b) ) read S, =, t ; [ read [ ; push( [ ) ; // ignored ( ( read ( ; push( ( ) ; S = t[5] + (a (c + b) ) [ read 5 ; // ignored read ] ; pop(); // ] matches with [ ( ( read c, +, b ; // ignored ( read ) ; pop(); // ) matches with ( read + ; ( read ( ; push( ( ) ; // ignored read ) ; pop(); // ) matches with ( ( read a, * ; // ignored Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 23 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 24 / 56
7 Πολυπλοκότητα Λειτουργιών Στοίβας Τα στοιχεία εισάγονται και ανακτώνται σε σταθερό χρόνο O(1). Είναι ανεξάρτητο του μεγέθους n της στοίβας. Και οι δύο λειτουργίες είναι πολύ αποδοτικές (γρήγορες). Δεν απαιτούνται συγκρίσεις/μετακινήσεις, που εμπεριέχουν κόστος. Δεν προσφέρονται οι δυνατότητες: Στοίβα Βιβλιοθήκης της Java Η Java παρέχει στοίβα στην standard βιβλιοθήκη της: Είναι «γενικευμένος» (generic) τύπος αντικειμένου. Μπορεί να «εξειδικευθεί» για οποιονδήποτε τύπο αντικειμένου. import j a v a. u t i l. S t a c k ; c l a s s StackApp { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { Stack < I n t e g e r > s t = new Stack < I n t e g e r > ( ) ; απευθείας ανάκτησης συγκεκριμένου στοιχείου ανάκτησης του i-οστού στοιχείου Μπορείτε ενδεχομένως να τις υλοποιήσετε: Τότε, ίσως δε χρειάζεστε η αποδοτικότητα μιας στοίβας. Ισως χρειάζεστε πίνακα που κατά περίπτωση λειτουργεί σαν στοίβα. s t. push ( new I n t e g e r ( 2 0 ) ) ; s t. push ( new I n t e g e r ( 4 0 ) ) ; s t. push ( new I n t e g e r ( 6 0 ) ) ; s t. push ( new I n t e g e r ( 8 0 ) ) ; while (! s t. empty ( ) ) System. out. p r i n t ( s t. pop ( ). i n t V a l u e ( ) + ) ; System. out. p r i n t l n ( ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 25 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 26 / 56 Ουρά (Queue) Μία «γραμμή αναμονής» της οποίας το μήκος: Ουρές Queues αυξάνει καθώς εισάγονται στοιχεία στο τέλος της, μικραίνει καθώς απομακρύνονται στοιχεία από την αρχή της. Αντίθετα με τη στοίβα και τα δύο άκρα χρησιμοποιούνται. Δομή Δεδομένων FIFO (First In, First Out): Διατήρηση σχετικής σειράς στοιχείων, ως προς εισαγωγή/απομάκρυνση. Στοιχείο που εισάγεται πριν από άλλο, θα εξαχθεί πιο νωρίς από το άλλο. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 27 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 28 / 56
8 Αναλογία με Φυσικό Κόσμο Βασικές Λειτουργίες Ουράς Ουρά αναμονής για επιβίβαση σε μέσο μαζικής μεταφοράς. Πακέτα δεδομένων που αναμένουν τη μετάδοσή τους στο Internet. Εισαγωγή στοιχείου Τοποθετείται στο τέλος της ουράς. Ουρά εκτυπωτή με εργασίες εκτύπωσης που αναμένουν επεξεργασία. Ουρά αποθήκευσης χαρακτήρων/συμβόλων που πληκτρολογούνται (π.χ., σε έναν επεξεργαστή κειμένου). Απομάκρυνση στοιχείου Απομακρύνεται από την αρχή της ουράς. z y x = = Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 29 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 30 / 56 Αναπαράσταση Ουράς Παράδειγμα Λειτουργίας Ουράς Συνίσταται στη διαχείριση των ακόλουθων αντικειμένων: τύπου int «δείκτης» στην αρχή της ουράς τύπου int «δείκτης» στο τέλος της ουράς makeempty() insert(a) a qarray τύπος πίνακα πίνακας αποθήκευσης στοιχείων ουράς Παρατηρήσεις: Θέση (στον πίνακα) επόμενης εισαγωγής στοιχείου: +1. Κενή ουρά: = 0, nitems = 0, = 1 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 31 / 56 insert(b) a b remove() remove() b Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 32 / 56
9 Υλοποίηση Ουράς με Πίνακα Κυκλική Αναπαράσταση Ουράς Μπορεί να υλοποιηθεί χρησιμοποιώντας πίνακα. (απομάκρυνση) Οχι αποδοτική αν μετακινούμε τα στοιχεία μετά από κάθε remove(). Σπατάλη χώρου εάν δεν χρησιμοποιούμε όλα τα κελιά. Ουρά με Κυκλικό Πίνακα Για να αντιμετωπίσουμε το πρόβλημα διαχείρισης χώρου. (εισαγωγή) Μπορούμε να φανταστούμε την ουρά σαν έναν κυκλικό πίνακα. Διατηρούμε (και πάλι) 2 δείκτες: έναν για την αρχή () και έναν για το τέλος της ουράς () Επανορισμός της κατάστασης κενής ουράς: = 0, nitems = 0, = qarray.length 1 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 33 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 34 / 56 Παράδειγμα Λειτουργίας με Κυκλικό Πίνακα (Αναδίπλωση) Λειτουργίες Ουράς Αρχικά: c d e insert ( f ) f c d e remove() f d e remove() f e remove() f Οταν οι δείκτες, που δείχνουν στο τέλος και στην αρχή της ουράς αντίστοιχα φτάσουν στο τέλος του πίνακα. Επανορίζουμε τους δείκτες ώστε να δείχνουν και οι δύο στην αρχή Βασικές Πράξεις insert(item): εισάγει το αντικείμενο item στο τέλος της ουράς. remove(): απομακρύνει/επιστρέφει το στοιχείο στην αρχή της ουράς. Βοηθητικές Λειτουργίες peek(): επιστρέφει το στοιχείο στην αρχή της ουράς. isempty(): ελέγχει εάν η ουρά είναι άδεια. isfull(): ελέγχει εάν η ουρά είναι γεμάτη. size(): αριθμός στοιχείων στην ουρά. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 35 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 36 / 56
10 Υλοποίηση Ουράς Ακεραίων (1/3) Υλοποίηση Ουράς (2/3) c l a s s LongQueue { p r i v a t e long [ ] qarray ; p r i v a t e i n t f r o n t ; p r i v a t e i n t r e a r ; p r i v a t e i n t nitems ; p u b l i c LongQueue ( i n t s ) { // c o n s t r u c t o r qarray = new long [ s ] ; f r o n t = 0 ; r e a r = 1; nitems = 0 ; p u b l i c boolean isempty ( ) { r e t u r n ( nitems == 0 ) ; p u b l i c boolean i s F u l l ( ) { r e t u r n ( nitems == qarray. l e n g t h ) ; p u b l i c i n t s i z e ( ) { r e t u r n ( nitems ) ; p u b l i c Long peek ( ) { i f (! isempty ( ) ) r e t u r n ( new Long ( qarray [ f r o n t ] ) ) ; r e t u r n ( n u l l ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 37 / 56 p u b l i c boolean i n s e r t ( long j ) { // put items at r e a r i f (! i s F u l l ( ) ) { r e a r = ( r e a r +1) % qarray. l e n g t h ; qarray [ r e a r ] = j ; nitems + + ; r e t u r n ( t r u e ) ; r e t u r n ( f a l s e ) ; p u b l i c Long remove ( ) { // remove from the f r o n t i f (! isempty ( ) ) { Long data = new Long ( qarray [ f r o n t ] ) ; f r o n t = ( f r o n t +1) % qarray. l e n g t h ; nitems ; r e t u r n ( data ) ; r e t u r n ( n u l l ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 38 / 56 Υλοποίηση Ουράς (3/3) με Ελέγχους c l a s s LongQueueApp { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { LongQueue Q = new LongQueue ( 5 ) ; // queue with 5 c e l l s Q. i n s e r t ( 1 0 ) ; Q. i n s e r t ( 2 0 ) ; // I n s e r t 4 items Q. i n s e r t ( 3 0 ) ; Q. i n s e r t ( 4 0 ) ; // Remove 3 items : 10, 20, 30 Q. remove ( ) ; Q. remove ( ) ; Q. remove ( ) ; Q. i n s e r t ( 5 0 ) ; Q. i n s e r t ( 6 0 ) ; // I n s e r t 4 items Q. i n s e r t ( 7 0 ) ; Q. i n s e r t ( 8 0 ) ; // ( wraps around ) while (!Q. isempty ( ) ) { // Remove and d i s p l a y a l l long n = Q. peek ( ) ; // ( 4 0, 50, 60, 70 80) Q. remove ( ) ; System. out. p r i n t ( n ) ; System. out. p r i n t ( ) ; System. out. p r i n t l n ( ) ; // end main // end c l a s s LongQueueApp Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 39 / 56 Πολυπλοκότητα Λειτουργιών Ουράς (σε πλήρη αντιστοιχία με τη στοίβα) Εισαγωγή στην / Απομάκρυνση από την ουρά σε χρόνο O(1). Είναι ανεξάρτητο του μεγέθους n της ουράς. Και οι δύο λειτουργίες είναι πολύ αποδοτικές (γρήγορες). Δεν απαιτούνται συγκρίσεις στοιχείων ή μετακινήσεις στοιχείων, που εμπεριέχουν κόστος. Ομως δεν υπάρχει δυνατότητα: απευθείας ανάκτησης ενός συγκεκριμένου στοιχείου από την ουρά. ανάκτησης του i-οστού στοιχείου. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 40 / 56
11 Ουρά Βιβλιοθήκης της Java Η Java παρέχει δομή ουράς στην standard βιβλιοθήκη της: Είναι «γενικευμένος» (generic) τύπος ουράς. Μπορεί να «εξειδικευθεί» για οποιονδήποτε τύπο αντικειμένου. Πράξεις εισαγωγής/απομάκρυνσης στην αρχή και στο τέλος της ουράς! import j a v a. u t i l. ArrayDeque ; c l a s s DequeApp { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { ArrayDeque < I n t e g e r > dq = new ArrayDeque < I n t e g e r > ( ) ; dq. a d d L a s t ( new I n t e g e r ( 1 5 ) ) ; dq. a d d F i r s t ( new I n t e g e r ( 2 0 ) ) ; Ουρές Προτεραιότητας Priority Queues System. out. p r i n t l n ( dq. p e e k F i r s t ( ) ) ; System. out. p r i n t l n ( dq. p e e k L a s t ( ) ) ; System. out. p r i n t l n ( dq. r e m o v e F i r s t ( ) ) ; System. out. p r i n t l n ( dq. removelast ( ) ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 41 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 42 / 56 Ουρές Προτεραιότητας: Εισαγωγή Ουρές Προτεραιότητας: Εισαγωγή Είναι πιο εξειδικευμένη δομή από τη στοίβα ή την ουρά. Οπως και στην ουρά, τα στοιχεία αφαιρώνται από την αρχή. Ομως, τα στοιχεία ταξινομούνται (κατά την εισαγωγή) έτσι, ώστε το στοιχείο με το χαμηλότερο (ή το υψηλότερο) κλειδί να βρίσκεται πάντα μπροστά. Τα στοιχεία διευθετούνται στην ουρά με βάση την σημαντικότητά τους. Το μικρότερο (μεγαλύτερο) κλειδί έχει μεγαλύτερη προτεραιότητα. Ο στόχος μας είναι να: προσπελάσουμε το σημαντικότερο στοιχείο στη συλλογή. απομακρύνουμε το στοιχείο από τη συλλογή. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 43 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 44 / 56
12 Λειτουργίες Υλοποίηση Επιλογές για την υλοποίηση ουράς προτεραιότητας: Ταξινομημένος Πίνακας Μία ουρά προτεραιότητας είναι ένας αφηρημένος τύπος δεδομένων (abstract data type ADT) που προσφέρει μεθόδους που επιτρέπουν: Απομάκρυνση στοιχείου με την ελάχιστη ή μέγιστη τιμή κλειδιού (στοιχείο «στην αρχή» της ουράς). Εισαγωγή. Απομάκρυνση «σημαντικότερου» στοιχείου σε χρόνο O(1). Εισαγωγή στοιχείου σε χρόνο: O(n). - Πρέπει να μετακινηθούν O(n) στοιχεία του πίνακα στη χειρότερη περίπτωση, ώστε να εισαχθεί το νέο στοιχείο στη σωστή θέση. Ποτέ δεν υλοποιούμε ουρές προτεραιότητας με ταξινομημένο πίνακα γίνεται εξαίρεση στη διάλεξη αυτή χάριν συζήτησης των λειτουργιών Σωρός (είδος δένδρου) Διευκολύνει εισαγωγή και απομάκρυνση σε χρόνο O(log n). Αντικείμενο επόμενου μαθήματος. Αυτή είναι η κατ εξοχήν μέθοδος υλοποίησης ουρών προτεραιότητας. Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 45 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 46 / 56 Ουρά Προτεραιότητας με Πίνακα (1/3) Ουρά Προτεραιότητας με Πίνακα (2/3) c l a s s LongPQueue { // Implements a Min PQueue p r i v a t e long [ ] qarray ; // s o r t e d a r r a y : max at qarray [ 0 ] p r i v a t e i n t nitems ; p u b l i c LongPQueue ( i n t s ) { // C o n s t r u c t o r qarray = new long [ s ] ; nitems = 0 ; // t r u e i f pqueue empty ( e l s e : f a l s e ) p u b l i c boolean isempty ( ) { r e t u r n ( nitems == 0 ) ; // t r u e i f pqueue f u l l ( e l s e : f a l s e ) p u b l i c boolean i s F u l l ( ) { r e t u r n ( nitems == qarray. l e n g t h ) ; // take a peek at the minimum element p u b l i c Long peek ( ) { i f ( t h i s. isempty ( ) ) r e t u r n ( n u l l ) ; e l s e r e t u r n ( new Long ( qarray [ nitems 1]) ) ; p u b l i c boolean i n s e r t ( long item ) { // i n s e r t item i n t j ; i f ( t h i s. i s F u l l ( ) ) r e t u r n ( f a l s e ) ; i f ( t h i s. isempty ( ) ) qarray [ nitems ++] = item ; e l s e { f o r ( j = nitems 1 ; j >= 0 ; j ) i f ( item <= qarray [ j ] ) break ; e l s e qarray [ j +1] = qarray [ j ] ; qarray [ j +1] = item ; nitems + + ; r e t u r n ( t r u e ) ; p u b l i c Long remove ( ) { // remove minimum item i f ( t h i s. isempty ( ) ) r e t u r n ( n u l l ) ; r e t u r n ( new Long ( qarray[ nitems ] ) ) ; Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 47 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 48 / 56
13 Ουρά Προτεραιότητας με Πίνακα (3/3) Ταξινόνηση με Ουρά Προτεραιότητας c l a s s LongPQApp { p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ) { LongPQueue pq = new LongPQueue ( 5 ) ; pq. i n s e r t ( 3 0 ) ; pq. i n s e r t ( 5 0 ) ; pq. i n s e r t ( 1 0 ) ; pq. i n s e r t ( 4 0 ) ; pq. i n s e r t ( 2 0 ) ; while (! pq. isempty ( ) ) { long item = pq. remove ( ). l o n g V a l u e ( ) ; Παράδειγμα Εισόδου: πίνακας ακεραίων αριθμών. Αλγόριθμος Ταξινόμησης: p u b l i c s t a t i c void pqsort ( long [ ] number ) { LongPQueue pq = new LongPQueue ( number. l e n g t h ) ; f o r ( i n t i = 0 ; i < number. l e n g t h ; i ++) pq. i n s e r t ( number [ i ] ) ; System. out. p r i n t ( item + ) ; // 10, 20, 30, 40, 50 // end while f o r ( i n t i = 0 ; i < number. l e n g t h ; i ++) number [ i ] = pq. remove ( ). l o n g V a l u e ( ) ; System. out. p r i n t l n ( ) ; // end main Πολυπλοκότητα? Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 49 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 50 / 56 Ασκηση 1 Υλοποίηση Ουράς με Δύο Στοίβες Διαθέτουμε δύο αντικείμενα δομής στοίβας, S1, S2. Υποστηρίζουν τις συνήθεις λειτουργίες στοίβας: push, pop, peek, isempty, isfull, size Ασκηση 1 Υλοποίηση Ουράς με Δύο Στοίβες c l a s s Queue { p r i v a t e S t a c k S1 ; p r i v a t e S t a c k S2 ; Ζητούνται υλοποιήσεις των insert και remove «εικονικής» ουράς: μόνο με χρήση των δύο στοιβών S1, S2, σαν αποθηκευτικό μέσο, μόνο με χρήση των λειτουργιών στοίβας (επί των S1, S2). Να δοθούν δύο υλοποιήσεις: 1. Στην πρώτη, η λειτουργία insert να είναι χρόνου O(1). 2. Στη δεύτερη, η λειτουργία remove να είναι χρόνου O(1). p u b l i c Queue ( i n t maxsize ) { S1 = new S t a c k ( maxsize ) ; S2 = new S t a c k ( maxsize ) ; p u b l i c void i n s e r t ( i n t item ) { /* implementation??? */ p u b l i c i n t remove ( ) { /* implementation??? */ Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 51 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 52 / 56
14 Ασκηση 1 - insert σε χρόνο (1) p u b l i c void i n s e r t ( i n t item ) { S1. push ( item ) ; p u b l i c i n t remove ( ) { while (! S1. isempty ( ) ) // Overturn S1 i n t o S2 S2. push ( S1. pop ( ) ) ; i n t item = S2. pop ( ) ; // Top of S2 was bottom i n S1 // ( was f i r s t i n ) while (! S2. isempty ( ) ) // Restore S1 without item S1. push ( S2. pop ( ) ) ; r e t u r n ( item ) ; // Return f i r s t i n as f i r s t out Πολυπλοκότητα της remove: O(n). Ασκηση 2 Υλοποίηση Στοίβας με Δύο Ουρές Διαθέτουμε δύο αντικείμενα δομής ουράς, Q1, Q2. Υποστηρίζουν τις συνήθεις λειτουργίες ουρών: insert, remove, peekfront, isempty, isfull, size Ζητούνται υλοποιήσεις των push και pop «εικονικής» στοίβας: μόνο με χρήση των δύο ουρών Q1, Q2, σαν αποθηκευτικό μέσο, μόνο με χρήση των λειτουργιών ουράς (επί των Q1, Q2). Να δοθούν δύο υλοποιήσεις: 1. Στην πρώτη, η λειτουργία pop να είναι χρόνου O(1). 2. Στη δεύτερη, η λειτουργία push να είναι χρόνου O(1). Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 53 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 54 / 56 Ασκηση 2 Ασκηση 2 pop σε χρόνο O(1) Υλοποίηση Στοίβας με Δύο Ουρές c l a s s S t a c k { p r i v a t e Queue Q1 ; p r i v a t e Queue Q2 ; p u b l i c S t a c k ( i n t maxsize ) { Q1 = new Queue ( maxsize ) ; Q2 = new Queue ( maxsize ) ; p u b l i c void push ( i n t item ) { /* implementation??? */ p u b l i c i n t pop ( ) { r e t u r n ( Q1. remove ( ) ) ; p u b l i c void push ( i n t item ) { Q2. i n s e r t ( item ) ; // I n s e r t i n Q2 while (! Q1. isempty ( ) ) // Empty Q1 i n t o Q2 Q2. i n s e r t ( Q1. remove ( ) ) ; Queue tempq = Q1 ; // Exchange the queues names Q1 = Q2 ; Q2 = tempq ; p u b l i c i n t pop ( ) { /* implementation??? */ Πολυπλοκότητα της push: O(n). Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 55 / 56 Ο. Τελέλης Πανεπιστήμιο Πειραιώς Δομές Δεδομένων 56 / 56
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:
Σύνοψη Προηγούµενου (2/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Πρόβληµα: Κατασκευή Οµοιόµορφα Τυχαίας Μετάθεσης.
Σύνοψη Προηγούµενου (1/2 Στοίβες, Ουρές, Ουρές Προτεραιότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Πίνακες Εισαγωγή, σε χρόνο O(1. Αναζήτηση, σε χρόνο O(n.
Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης
Σύνοψη Προηγούμενου Λίστες (Lists) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Στοίβες (Stacks) : στην κορυφή της στοίβας ( ) από την κορυφή της στοίβας ( ) Ουρές
Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας (Priority
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα
Δομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη
Συλλογές, Στοίβες και Ουρές
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει
Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων
Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων
Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή
Δομές Δεδομένων & Αλγόριθμοι
Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές
Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )
Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική
Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται
Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 26: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας -Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι
Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης
Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.
Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:
3 ΣTOIBEΣ KAI OYPEΣ 3.1 ΣΤΟΙΒΕΣ Στοίβα (stack) είναι µία λίστα στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Συχνά µία στοίβα αναφέρεται
Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.
Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ
Βασικές Έννοιες Δοµών Δεδοµένων
Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες
Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής
Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος
Δομές Δεδομένων Ενότητα 4
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 4: Ουρές Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης
Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα
Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές
Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες
Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών
Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2016 Δοµές Δεδοµένων - Εργασία 1 Διδάσκων: E. Μαρκάκης Στοίβες και Ουρές Σκοπός της εργασίας είναι η εξοικείωση µε βασικούς αφηρηµένους
Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή
Απλές Δοµές Δεδοµένων Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος
Δομές δεδομένων (2) Αλγόριθμοι
Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student
Κεφάλαιο 6 Ουρές Προτεραιότητας
Κεφάλαιο 6 Ουρές Προτεραιότητας Περιεχόμενα 6.1 Ο αφηρημένος τύπος δεδομένων ουράς προτεραιότητας... 114 6.2 Ουρές προτεραιότητας με στοιχειώδεις δομές δεδομένων... 115 6.3 Δυαδικός σωρός... 116 6.3.1
Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) - Σύγκριση Συνδεδεμένων Λιστών με Πίνακες
ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 4 ο Στοίβα Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Στοίβα Υλοποίηση µε Πίνακα Υλοποίηση
Δομές Δεδομένων. Λουκάς Γεωργιάδης. 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 Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δεδομένα: Σύνολο από πληροφορίες που
Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες
Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -
Βασικές Δομές Δεδομένων
Βασικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Διαδοχική και Δυναμική Χορήγηση
Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης
Ουρές Προτεραιότητας: Υπενθύμιση Σωροί / Αναδρομή / Ταξινόμηση Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς (Abstract Data Type) με μεθόδους: Μπορεί να υλοποιηθεί με
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού
Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες
Ουρά Προτεραιότητας (priority queue)
Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει δύο βασικές λειτουργίες : Εισαγωγή στοιχείου με δεδομένο κλειδί. Επιστροφή ενός στοιχείου με μέγιστο (ή ελάχιστο) κλειδί και διαγραφή
Διορθώσεις σελ
Διορθώσεις σελ. 73-74 # Τώρα ο άνθρωπος σκέφτεται έναν αριθμό από 1 έως 1000 Ν = 1000 print Σκέψου έναν αριθμό από το 1 έως το, Ν guesses = 0 found = False first = 1 last = N while not found and guesses
ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ
ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ Ουρές Προτεραιότητας (Priority Queues) Θεωρούµε ότι τα προς αποθήκευση στοιχεία έχουν κάποια διάταξη (καθένα έχει µια προτεραιότητα). Τα προς αποθήκευση στοιχεία είναι
Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 8: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική Δέσμευση
Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5
Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών
Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες
Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Δομές Δεδομένων και Αλγόριθμοι
Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 14 Στοίβες 1 / 14 Στοίβες Η στοίβα είναι μια ειδική περίπτωση γραμμικής λίστας στην οποία οι εισαγωγές
Ουρά Προτεραιότητας: Heap
Ουρά Προτεραιότητας: Heap Επιμέλεια διαφανειών: Δ. Φωτάκης (λίγες τροποποιήσεις: Α. Παγουρτζής) Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Δομές Δεδομένων (Αναπαράσταση,)
Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Πίνακες (Μια παλιά άσκηση) Εισαγωγή. A n
Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς A n O(1) (στην πρώτη ελέυθερη θέση στο τέλος του πίνακα).
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές
ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί
Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2
Δοµές Δεδοµένων Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2 Δοµές Δεδοµένων (Αναπαράσταση,) οργάνωση και διαχείριση συνόλων αντικειµένων για αποδοτική ενηµέρωση και ανάκτηση πληροφορίας.
Στοίβες με Δυναμική Δέσμευση Μνήμης
ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές
ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής
Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ
ιαφάνειες παρουσίασης #11
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016
Δομές Δεδομένων. Λουκάς Γεωργιάδης.
Δομές Δεδομένων http://www.cs.uoi.gr/~loukas/courses/data_structures/ Λουκάς Γεωργιάδης email: loukas@cs.uoi.gr Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή Δεδομένων: Μέθοδος αποθήκευσης
Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ
Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ mpompotas@ceid.upatras.gr Εισαγωγή - STL Η Standard Βιβλιοθήκη προτύπων (STL) είναι μια βιβλιοθήκη λογισμικού για την C++ Δημιουργήθηκε
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 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε
Standard Template Library (STL) C++ library
Τ Μ Η Μ Α Μ Η Χ Α Ν Ι Κ Ω Ν Η / Υ Κ Α Ι Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Standard Template Library (STL) C++ library Δομές Δεδομένων Μάριος Κενδέα kendea@ceid.upatras.gr Εισαγωγή Η Standard Βιβλιοθήκη προτύπων
ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ οµηµένος Προγραµµατισµός Ανοιξη 5 Μάθηµα 5 ο Ουρά Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Ουρά Υλοποίηση µε Κυκλικό Πίνακα Υλοποίηση
Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή
4. Συνδεδεμένες Λίστες
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 4. Συνδεδεμένες Λίστες 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 10/11/2016 Εισαγωγή
ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων
ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Σχετικές έννοιες 8.3 Υλοποίηση δοµών δεδοµένων 8.4 Μια σύντοµη µελέτη περίπτωσης 8.5 Προσαρµοσµένοι τύποι δεδοµένων 1 Βασικές δοµές
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Πίνακες Συµβόλων Κεφάλαιο 12 ( ) Ε. Μαρκάκης Επίκουρος Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Πίνακες Συµβόλων Κεφάλαιο 12 (12.1-12.4) Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Πίνακες συµβόλων Διεπαφή πίνακα συµβόλων Αναζήτηση µε αριθµοδείκτη Ακολουθιακή αναζήτηση Δυαδική αναζήτηση
Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή
Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα
Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035
Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort
Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 9-1 Ουρά προτεραιότητας
Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Δομές Δεδομένων Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Σωρός Μεγίστου ως ΑΤΔ Ένας σωρός μεγίστου (max heap) είναι ένας ΑΤΔ που
Μάθημα 21: Ουρές (Queues)
Queues Page 1 Μάθημα 21: Ουρές (Queues) Η ουρά (queue) είναι μια δομή δεδομένων. Η βασική λειτουργικότητα είναι η εισαγωγή στοιχείων στην πίσω θέση και η εξαγωγή-διαγραφή στοιχείων από την μπροστινή θέση.
Βασικά Στοιχεία της Java
Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά
ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 9-1
Σωροί Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθµος ταξινόµησης HeapSort Παραλλαγές Σωρών ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 7: Αφαίρεση δεδόμενων Πασχαλίδης Δημοσθένης Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ουρές ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ Μια ουρά αποτελεί μια δομή δεδομένων στη λογική του First-in
Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας
ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15
Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ Κωδικός Θ: ΤΠ3001, Κωδικός Ε: ΤΠ3101 (ΜΕΥ/Υ) Ώρες (Θ - Ε): 4-2 Προαπαιτούμενα: Δρ. ΒΙΔΑΚΗΣ ΝΙΚΟΣ ΕΡΓΑΣΤΗΡΙΟ 6 Στοίβα (Stack) Stack Introduction Stack is one of the
Κλάσεις στη 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
POINTERS, AGGREGATION, COMPOSITION
POINTERS, AGGREGATION, COMPOSITION POINTERS TO OBJECTS Η κλάση mystring class mystring private: char *s; int size; public: mystring(const char *); ~mystring(); char *GetString(); int GetSize(); ; mystring::mystring(const
Δομές Δεδομένων & Αλγόριθμοι
Λίστες Λίστες - Απλά Συνδεδεμένες Λίστες - Διπλά Συνδεδεμένες Λίστες Είδη Γραμμικών Λιστών Σειριακή Λίστα Καταλαμβάνει συνεχόμενες θέσεις κύριας μνήμης Συνδεδεμένη Λίστα Οι κόμβοι βρίσκονται σε απομακρυσμένες
Κεφάλαιο 5 Συλλογές, Στοίβες και Ουρές
Κεφάλαιο 5 Συλλογές, Στοίβες και Ουρές Περιεχόμενα 5.1 Αφηρημένοι τύποι δεδομένων... 94 5.2 Συλλογές και Επαναλήπτες... 95 5.1.1 Εφαρμογή: Υλοποίηση λιστών γειτνίασης γραφήματος... 96 5.2 Στοίβα... 97
Ουρά Προτεραιότητας: Heap
Ουρά Προτεραιότητας: Heap ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ομές εδομένων (Αναπαράσταση,) οργάνωση και διαχείριση συνόλων αντικειμένων για
Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι
Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Αραποστάθης Μάριος Καθηγητής Πληροφορικής Πειραματικού Λυκείου Βαρβακείου http://users.sch.gr/mariosarapostathis
Επιµέλεια Θοδωρής Πιερράτος
εδοµένα οµές δεδοµένων και αλγόριθµοι Τα δεδοµένα είναι ακατέργαστα γεγονότα. Η συλλογή των ακατέργαστων δεδοµένων και ο συσχετισµός τους δίνει ως αποτέλεσµα την πληροφορία. Η µέτρηση, η κωδικοποίηση,
ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ
ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Τα δεδομένα (data) είναι η αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Η συλλογή των ακατέργαστων δεδομένων και ο συσχετισμός
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Υλικό από τις σηµειώσεις Ν. Παπασπύρου, 2006 Δέντρα δυαδικής αναζήτησης Δενδρικές δοµές δεδοµένων στις οποίες Όλα τα στοιχεία στο αριστερό υποδέντρο της ρίζας είναι
Ουρά Προτεραιότητας: Heap
Ουρά Προτεραιότητας: Heap ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό
Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.
Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα
Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).
Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).
8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων
Οι δομές δεδομένων στοίβα και ουρά
Καθηγητής Πληροφορικής Απαγορεύεται η αναπαραγωγή των σημειώσεων χωρίς αναφορά στην πηγή Βίντεο: https://youtu.be/j8petzztqty Οι δομές δεδομένων στοίβα και ουρά Εισαγωγή Στα πλαίσια του μαθήματος της Ανάπτυξης
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
Δοµές Δεδοµένων. 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης
Δοµές Δεδοµένων 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Στοίβα ώθησης προς τα κάτω Παραδείγµατα πελατών για στοίβες Υλοποιήσεις στοίβας µε πίνακες και λίστες Γενικές υλοποιήσεις Ουρές
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού
Δομές Δεδομένων Ενότητα 3
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 3: Στοίβα Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα
Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου
10. Πίνακες Κατακερματισμού
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 10. Πίνακες Κατακερματισμού 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 16/12/2016 Πίνακες
Φροντιστήριο 4 Σκελετοί Λύσεων
Φροντιστήριο 4 Σκελετοί Λύσεων Άσκηση 1 Υποθέτουμε πως οι λίστες είναι υλοποιημένες χρησιμοποιώντας τις πιο κάτω δομές. typedef struct Node{ type data; struct node *next; node; node *top; list; Υλοποιούμε