Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1)."

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) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Πρόβληµα: Κατασκευή Οµοιόµορφα Τυχαίας Μετάθεσης.

Σύνοψη Προηγούµενου (2/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Πρόβληµα: Κατασκευή Οµοιόµορφα Τυχαίας Μετάθεσης. Σύνοψη Προηγούµενου (1/2 Στοίβες, Ουρές, Ουρές Προτεραιότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Πίνακες Εισαγωγή, σε χρόνο O(1. Αναζήτηση, σε χρόνο O(n.

Διαβάστε περισσότερα

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

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης Σύνοψη Προηγούμενου Λίστες (Lists) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Στοίβες (Stacks) : στην κορυφή της στοίβας ( ) από την κορυφή της στοίβας ( ) Ουρές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

Διαβάστε περισσότερα

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

Συλλογές, Στοίβες και Ουρές Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει

Διαβάστε περισσότερα

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές

Διαβάστε περισσότερα

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

Διαβάστε περισσότερα

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

Διαβάστε περισσότερα

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

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. Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος

Διαβάστε περισσότερα

Δομές Δεδομένων Ενότητα 4

Δομές Δεδομένων Ενότητα 4 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 4: Ουρές Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα

Διαβάστε περισσότερα

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

Διαβάστε περισσότερα

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2016 Δοµές Δεδοµένων - Εργασία 1 Διδάσκων: E. Μαρκάκης Στοίβες και Ουρές Σκοπός της εργασίας είναι η εξοικείωση µε βασικούς αφηρηµένους

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δομές δεδομένων (2) Αλγόριθμοι Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student

Διαβάστε περισσότερα

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

Κεφάλαιο 6 Ουρές Προτεραιότητας Κεφάλαιο 6 Ουρές Προτεραιότητας Περιεχόμενα 6.1 Ο αφηρημένος τύπος δεδομένων ουράς προτεραιότητας... 114 6.2 Ουρές προτεραιότητας με στοιχειώδεις δομές δεδομένων... 115 6.3 Δυαδικός σωρός... 116 6.3.1

Διαβάστε περισσότερα

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) - Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

Διαβάστε περισσότερα

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

ΠΛΗ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 Δομές Δεδομένων http://www.cs.uoi.gr/~loukas/courses/data_structures/ Λουκάς Γεωργιάδης email: loukas@cs.uoi.gr Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δεδομένα: Σύνολο από πληροφορίες που

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

Διαβάστε περισσότερα

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

Διαβάστε περισσότερα

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

Βασικές Δομές Δεδομένων Βασικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Διαδοχική και Δυναμική Χορήγηση

Διαβάστε περισσότερα

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης Ουρές Προτεραιότητας: Υπενθύμιση Σωροί / Αναδρομή / Ταξινόμηση Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς (Abstract Data Type) με μεθόδους: Μπορεί να υλοποιηθεί με

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

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

Διαβάστε περισσότερα

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

Ουρά Προτεραιότητας (priority queue)

Ουρά Προτεραιότητας (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 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ Ουρές Προτεραιότητας (Priority Queues) Θεωρούµε ότι τα προς αποθήκευση στοιχεία έχουν κάποια διάταξη (καθένα έχει µια προτεραιότητα). Τα προς αποθήκευση στοιχεία είναι

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 8: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική Δέσμευση

Διαβάστε περισσότερα

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 14 Στοίβες 1 / 14 Στοίβες Η στοίβα είναι μια ειδική περίπτωση γραμμικής λίστας στην οποία οι εισαγωγές

Διαβάστε περισσότερα

Ουρά Προτεραιότητας: Heap

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

Διαβάστε περισσότερα

Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Πίνακες (Μια παλιά άσκηση) Εισαγωγή. A n

Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Πίνακες (Μια παλιά άσκηση) Εισαγωγή. A n Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς A n O(1) (στην πρώτη ελέυθερη θέση στο τέλος του πίνακα).

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές

Διαβάστε περισσότερα

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

Διαβάστε περισσότερα

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2 Δοµές Δεδοµένων Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2 Δοµές Δεδοµένων (Αναπαράσταση,) οργάνωση και διαχείριση συνόλων αντικειµένων για αποδοτική ενηµέρωση και ανάκτηση πληροφορίας.

Διαβάστε περισσότερα

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

Στοίβες με Δυναμική Δέσμευση Μνήμης ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

Διαβάστε περισσότερα

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

ιαφάνειες παρουσίασης #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 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ Δομές Δεδομένων 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

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 Τ Μ Η Μ Α Μ Η Χ Α Ν Ι Κ Ω Ν Η / Υ Κ Α Ι Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Standard Template Library (STL) C++ library Δομές Δεδομένων Μάριος Κενδέα kendea@ceid.upatras.gr Εισαγωγή Η Standard Βιβλιοθήκη προτύπων

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

4. Συνδεδεμένες Λίστες Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 4. Συνδεδεμένες Λίστες 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 10/11/2016 Εισαγωγή

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 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 (12.1-12.4) Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Πίνακες συµβόλων Διεπαφή πίνακα συµβόλων Αναζήτηση µε αριθµοδείκτη Ακολουθιακή αναζήτηση Δυαδική αναζήτηση

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

Διαβάστε περισσότερα

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035

Διαβάστε περισσότερα

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

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort

Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 9-1 Ουρά προτεραιότητας

Διαβάστε περισσότερα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Σωρός Μεγίστου ως ΑΤΔ Ένας σωρός μεγίστου (max heap) είναι ένας ΑΤΔ που

Διαβάστε περισσότερα

Μάθημα 21: Ουρές (Queues)

Μάθημα 21: Ουρές (Queues) Queues Page 1 Μάθημα 21: Ουρές (Queues) Η ουρά (queue) είναι μια δομή δεδομένων. Η βασική λειτουργικότητα είναι η εισαγωγή στοιχείων στην πίσω θέση και η εξαγωγή-διαγραφή στοιχείων από την μπροστινή θέση.

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 9-1

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 9-1 Σωροί Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθµος ταξινόµησης HeapSort Παραλλαγές Σωρών ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 7: Αφαίρεση δεδόμενων Πασχαλίδης Δημοσθένης Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ουρές ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ Μια ουρά αποτελεί μια δομή δεδομένων στη λογική του First-in

Διαβάστε περισσότερα

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

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας

Διαβάστε περισσότερα

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15 Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ Κωδικός Θ: ΤΠ3001, Κωδικός Ε: ΤΠ3101 (ΜΕΥ/Υ) Ώρες (Θ - Ε): 4-2 Προαπαιτούμενα: Δρ. ΒΙΔΑΚΗΣ ΝΙΚΟΣ ΕΡΓΑΣΤΗΡΙΟ 6 Στοίβα (Stack) Stack Introduction Stack is one of the

Διαβάστε περισσότερα

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

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

Βασικές οµές εδοµένων Βασικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αφηρηµένοι Τύποι εδοµένων Οι ΑΤ Στοίβα και Ουρά Υλοποίηση των ΑΤ Στοίβα και Ουρά µε ιαδοχική και υναµική Χορήγηση Μνήµης

Διαβάστε περισσότερα

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

POINTERS, AGGREGATION, COMPOSITION

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 Συλλογές, Στοίβες και Ουρές Περιεχόμενα 5.1 Αφηρημένοι τύποι δεδομένων... 94 5.2 Συλλογές και Επαναλήπτες... 95 5.1.1 Εφαρμογή: Υλοποίηση λιστών γειτνίασης γραφήματος... 96 5.2 Στοίβα... 97

Διαβάστε περισσότερα

Ουρά Προτεραιότητας: Heap

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

Διαβάστε περισσότερα

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

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Αραποστάθης Μάριος Καθηγητής Πληροφορικής Πειραματικού Λυκείου Βαρβακείου http://users.sch.gr/mariosarapostathis

Διαβάστε περισσότερα

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

Επιµέλεια Θοδωρής Πιερράτος εδοµένα οµές δεδοµένων και αλγόριθµοι Τα δεδοµένα είναι ακατέργαστα γεγονότα. Η συλλογή των ακατέργαστων δεδοµένων και ο συσχετισµός τους δίνει ως αποτέλεσµα την πληροφορία. Η µέτρηση, η κωδικοποίηση,

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Τα δεδομένα (data) είναι η αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Η συλλογή των ακατέργαστων δεδομένων και ο συσχετισμός

Διαβάστε περισσότερα

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Υλικό από τις σηµειώσεις Ν. Παπασπύρου, 2006 Δέντρα δυαδικής αναζήτησης Δενδρικές δοµές δεδοµένων στις οποίες Όλα τα στοιχεία στο αριστερό υποδέντρο της ρίζας είναι

Διαβάστε περισσότερα

Ουρά Προτεραιότητας: Heap

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα

Διαβάστε περισσότερα

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα). Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Διαβάστε περισσότερα

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

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

Οι δομές δεδομένων στοίβα και ουρά Καθηγητής Πληροφορικής Απαγορεύεται η αναπαραγωγή των σημειώσεων χωρίς αναφορά στην πηγή Βίντεο: https://youtu.be/j8petzztqty Οι δομές δεδομένων στοίβα και ουρά Εισαγωγή Στα πλαίσια του μαθήματος της Ανάπτυξης

Διαβάστε περισσότερα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

Διαβάστε περισσότερα

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

Δοµές Δεδοµένων. 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Στοίβα ώθησης προς τα κάτω Παραδείγµατα πελατών για στοίβες Υλοποιήσεις στοίβας µε πίνακες και λίστες Γενικές υλοποιήσεις Ουρές

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

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

Διαβάστε περισσότερα

Δομές Δεδομένων Ενότητα 3

Δομές Δεδομένων Ενότητα 3 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 3: Στοίβα Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου

Διαβάστε περισσότερα

10. Πίνακες Κατακερματισμού

10. Πίνακες Κατακερματισμού Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 10. Πίνακες Κατακερματισμού 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 16/12/2016 Πίνακες

Διαβάστε περισσότερα

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων Άσκηση 1 Υποθέτουμε πως οι λίστες είναι υλοποιημένες χρησιμοποιώντας τις πιο κάτω δομές. typedef struct Node{ type data; struct node *next; node; node *top; list; Υλοποιούμε

Διαβάστε περισσότερα