ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος
|
|
- Έρις Λόντος
- 7 χρόνια πριν
- Προβολές:
Transcript
1 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 19 Δεκεμβρίου 2016, ώρα 23:59. Τρόπος Παράδοσης: Χρησιμοποιώντας το πρόγραμμα turnin. Πληροφορίες για το πώς λειτουργεί το turnin παρέχονται στην ιστοσελίδα του μαθήματος. Γενική Περιγραφή Στην εργασία αυτή καλείστε να υλοποιήσετε ένα πρόγραμμα που προσομοιώνει τη λειτουργία ενός ζωολογικού πάρκου. Το πάρκο αυτό αποτελείται από ένα σύνολο οικοσυστημάτων τα οποία φιλοξενούν διάφορα είδη ζώων και είναι ανοιχτό προς τους επισκέπτες. Στο πάρκο απασχολούνται κάποιοι εργαζόμενοι στους οποίους έχει ανατεθεί η επιμέλεια και φροντίδα κάποιων ζώων που φιλοξενούνται στα διάφορα οικοσυστήματα. Αναλυτική Περιγραφή Ζητούμενης Υλοποίησης Στο ζωολογικό πάρκο κατοικούν διάφορα είδη ζώων τα οποία συνυπάρχουν ομαδοποιημένα σε οικοσυστήματα τα οποία τους επιτρέπουν να συμβιώνουν αρμονικά. Όλα τα ζώα του πάρκου αποθηκεύονται σε ένα απλά συνδεδεμένο δένδρο δυαδικής αναζήτησης (Binary Search Tree), το οποίο είναι ταξινομημένο σε αύξουσα διάταξη με βάση το αναγνωριστικό του κάθε ζώου. Το δένδρο αυτό ονομάζεται δένδρο ζώων και ο κάθε κόμβος του αποτελεί μια εγγραφή τύπου animal με τα ακόλουθα πεδία: aid: Αναγνωριστικό (τύπου int) που χαρακτηρίζει μοναδικά το ζώο. lc: Δείκτης (τύπου animal) στο αριστερό παιδί του κόμβου στο δένδρο ζώων. rc: Δείκτης (τύπου animal) στο δεξιό παιδί του κόμβου στο δένδρο ζώων. Στην δεύτερη φάση της προγραμματιστικής εργασίας, θα κάνουμε την θεώρηση ότι το κάθε οικοσύστημα μπορεί να φιλοξενήσει το πολύ 20 ζώα. Συνεπώς, μπορούμε να δεσμεύσουμε ένα εύρος 20 αναγνωριστικών για
2 τα ζώα κάθε οικοσυστήματος. Για παράδειγμα, τα ζώα του πρώτου οικοσυστήματος θα έχουν αναγνωριστικά στο διάστημα 0-19, του δεύτερου οικοσυστήματος στο διάστημα 20-39, κ.ο.κ. Στο Σχήμα 1 παρουσιάζεται το δένδρο όλων των ζώων του ζωολογικού πάρκου. Σχήμα 1: Το δυαδικό δένδρο αναζήτησης ζώων όλου του πάρκου Για τη διαχείριση των οικοσυστημάτων, θα δημιουργήσετε έναν πίνακα σταθερού μεγέθους 50 θέσεων (όσα και τα οικοσυστήματα του πάρκου), ο οποίος θα ονομάζεται πίνακας οικοσυστημάτων. Κάθε θέση του πίνακα αποτελεί μια εγγραφή τύπου ecosystem με τα ακόλουθα πεδία: eco_id: Αναγνωριστικό (τύπου int) που χαρακτηρίζει μοναδικά το οικοσύστημα animals_tree: Δείκτης (τύπου animal) στην ρίζα ενός απλά συνδεδεμένου δένδρου δυαδικής αναζήτησης, το οποίο ονομάζεται δένδρο ζώων του οικοσυστήματος. Το δένδρο αυτό περιέχει κόμβους τύπου animal και είναι ταξινομημένο με βάση το αναγνωριστικό των ζώων. Στο Σχήμα 2 παρουσιάζεται ο πίνακας οικοσυστημάτων, και το δένδρο των ζώων που δεικτοδοτείται από κάθε στοιχείο του.
3 Σχήμα 2: Ο πίνακας οικοσυστημάτων με τα επιμέρους δυαδικά δένδρα των ζώων Το πάρκο είναι ανοιχτό προς τους πολίτες και δεν είναι λίγοι αυτοί που το επισκέπτονται καθημερινά. Για το σκοπό αυτό θα δημιουργήσετε ένα πλήρες, μη-ταξινομημένο, διπλά συνδεδεμένο, δυαδικό δένδρο, το οποίο ονομάζεται δένδρο επισκεπτών. Ο κάθε κόμβος του δένδρου περιέχει μια εγγραφή τύπου visitor με τα ακόλουθα πεδία: vid: Αναγνωριστικό (τύπου int) που χαρακτηρίζει μοναδικά τον επισκέπτη του πάρκου. last_visit: Πεδίο (τύπου int) που αντιστοιχεί στο έτος της τελευταίας επίσκεψής του στο πάρκο. visits: Μετρητής (τύπου int) που αντικατοπτρίζει τον αριθμό των επισκέψεων του επισκέπτη στο πάρκο. p: Δείκτης (τύπου visitor) στον πατρικό κόμβο στο δένδρο επισκεπτών. lc: Δείκτης (τύπου visitor) στο αριστερό παιδί του κόμβου στο δένδρο επισκεπτών. rc: Δείκτης (τύπου visitor) στο δεξιό παιδί του κόμβου στο δένδρο επισκεπτών. Για την δομή αυτή θα διατηρείτε δύο δείκτες. Έναν προς την ρίζα του δένδρου κι έναν προς το δεξιότερο φύλλο του δένδρου (rightmost leaf). Το Σχήμα 3 απεικονίζει το δένδρο επισκεπτών.
4 Σχήμα 3: Το δένδρο επισκεπτών Οι εργαζόμενοι στο ζωολογικό πάρκο είναι υπεύθυνοι για την επιμέλεια συγκεκριμένων ζώων (όχι οικοσυστημάτων όπως στην πρώτη φάση). Για τον σκοπό αυτό θα δημιουργήσετε ένα απλά συνδεδεμένο δυαδικό δένδρο, ταξινομημένο ως προς το αναγνωριστικό των εργαζομένων με κόμβο φρουρό που ονομάζεται δένδρο εργαζομένων. Οι εγγραφές του δένδρου αυτού είναι τύπου employee και περιέχουν τα ακόλουθα πεδία: eid: Αναγνωριστικό (τύπου int) που χαρακτηρίζει μοναδικά τον κάθε εργαζόμενο του πάρκου. animal_count: Μετρητής (τύπου int) που περιγράφει τον αριθμό των ζώων για τα οποία είναι υπεύθυνος ο εργαζόμενος. lc: Δείκτης (τύπου employee) στο αριστερό παιδί του εργαζομένου στο δένδρο εργαζομένων. rc: Δείκτης (τύπου employee) στον δεξιό παιδί του εργαζομένου στο δένδρο εργαζομένων. employees_animal_list: Δείκτης (τύπου employee_animal) στο πρώτο στοιχείο μιας απλά συνδεδεμένης λίστας η οποία περιέχει τα ζώα για τα οποία είναι υπεύθυνος ο εργαζόμενος. Πιο συγκεκριμένα η δομή employee_animal περιέχει τα ακόλουθα πεδία: aid: Το αναγνωριστικό του ζώου για το οποίο είναι υπεύθυνος ο εργαζόμενος next: Δείκτης (τύπου employee_animal) στο επόμενο στοιχείο της λίστας O κόμβος φρουρός του δένδρου είναι ένας διαχειριστικός κόμβος για τον οποίο ισχύουν τα εξής: είναι και αυτός τύπου employee με την ιδιαιτερότητα ότι το αναγνωριστικό του (eid) και τo πεδίo animal_count έχει τιμή -1. Επίσης, τα πεδία lc και rc του κόμβου φρουρού είναι ίσα με NULL. Στο Σχήμα 4 φαίνεται το δένδρο των εργαζομένων.
5 Σχήμα 4: Το δένδρο των εργαζομένων με τις λίστες ζώων του καθενός Προκειμένου να έχουμε και την αντίστροφη αντιστοίχιση και να μπορούμε να βρούμε ποιος εργαζόμενος είναι υπεύθυνος για ένα συγκεκριμένο ζώο θα πρέπει να υλοποιηθεί ένας πίνακας κατακερματισμού ANIMALS_TO_EMPLOYEES[hash_table_size], το μέγεθος του οποίου θα πρέπει να επιλέξετε εσείς προσεκτικά και να είστε σε θέση να δικαιολογήσετε την επιλογή σας. Για την επίλυση των συγκρούσεων θα ακολουθήσετε την μέθοδο των ταξινομημένων αλυσίδων. Κάθε στοιχείο του πίνακα κατακερματισμού περιέχει έναν δείκτη στο πρώτο στοιχείο μιας απλά συνδεδεμένης αλυσίδας η οποία θα είναι ταξινομημένη ως προς το αναγνωριστικό του ζώου. Κάθε στοιχείο μιας αλυσίδας είναι μια εγγραφή τύπου animal_to_employee με τα εξής πεδία: aid: Το αναγνωριστικό του ζώου που αναζητούμε eid: Το αναγνωριστικό (τύποτ int) του εργαζομένου που είναι υπεύθυνος για το συγκεκριμένο ζώο next: Δείκτης (τύπου animal_to_employee) στο επόμενο στοιχείο της αλυσίδας Πιο συγκεκριμένα ο κατακερματισμός θα γίνεται με βάση το αναγνωριστικό του εκάστοτε ζώου (aid) και στην συνέχεια θα αναζητείται η κατάλληλη εγγραφή στην αλυσίδα της αντίστοιχης θέσης του πίνακα κατακερματισμού. Σημειώνεται ότι το aid κάθε κόμβου της αλυσίδας που δεικτοδοτείται από τη θέση i του πίνακα κατακερματισμού, έχει τιμή κατακερματισμού i. Για την υλοποίηση της συνάρτησης κατακερματισμού θα πρέπει να βασιστείτε στην τεχνική του καθολικού κατακερματισμού. Για την υλοποίηση του καθολικού κατακερματισμού θα δίνονται τα εξής: 1. Ένας πίνακας primes[], ο οποίος περιέχει πρώτους αριθμούς σε αύξουσα σειρά. 2. Το μέγιστο αναγνωριστικό ζώου aid, μέσω της μεταβλητής max_animal_id. 3. Το μέγιστο πλήθος ζώων, μέσω της μεταβλητής animals_total_count.
6 Αυτές οι μεταβλητές είναι global κι έχουν δηλωθεί στο αρχείο.h. Στο σχήμα 5 φαίνεται ο πίνακας κατακερματισμού και οι επιμέρους αλυσίδες του. Σχήμα 5: Ο πίνακας κατακερματισμού Τρόπος Λειτουργίας Προγράμματος Το πρόγραμμα που θα δημιουργηθεί θα πρέπει να εκτελείται καλώντας την ακόλουθη εντολή: <executable> <input_file> Όπου <executable> είναι το όνομα του εκτελέσιμου αρχείου του προγράμματος (π.χ. a.out) και <input_file> είναι το όνομα ενός αρχείου εισόδου (π.χ. testfile) το οποίο περιέχει γεγονότα των ακόλουθων μορφών: - L <aid> Γεγονός που υποδηλώνει ότι το ζώο µε αναγνωριστικό aid θα φιλοξενηθεί στο ζωολογικό πάρκο. Κατά το γεγονός αυτό θα γίνεται εισαγωγή ενός νέου κόµβου τύπου animal στο δένδρο των ζώων σε χρόνο O(h), όπου h
7 είναι το ύψος του δένδρου. Μετά από κάθε εισαγωγή, το δένδρο των ζώων πρέπει να παραµένει ταξινοµηµένο. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: L <aid> Animals = <aid 1 >, <aid 2 >,..., <aid n > όπου n είναι ο αριθμός των κόμβων του δένδρου των ζώων. - D Γεγονός τύπου distribute animals το οποίο σηµατοδοτεί τον διαχωρισµό των ζώων ανά οικοσύστημα και τη μεταφορά των ζώων κάθε οικοσυστήματος στο δένδρο ζώων του οικοσυστήµατος το οποίο δεικτοδοτείται από το κατάλληλο στοιχείο του πίνακα οικοσυστημάτων. Ο αλγόριθμος για τον διαχωρισμό των ζώων του δένδρου ζώων, θα πρέπει να υλοποιηθεί ως εξής: Για κάθε σύνολο ζώων που ανήκουν σε ένα οικοσύστημα θα πρέπει να αναζητήσετε το ανώτατο αναγνωριστικό ζώου που αντιστοιχεί στο οικοσύστημα αυτό (π.χ. για το οικοσύστημα 1 θα πρέπει να αναζητήσετε το αναγνωριστικό ζώου 19, για το οικοσύστημα 2 το αναγνωριστικό 39 κλπ.) και να αποκόβετε τους δείκτες που βρίσκονται δεξιά κι αριστερά του μονοπατιού. Στην συνέχεια, τα δένδρα του δάσους που προκύπτει από τις παραπάνω αποκοπές δεικτών, θα πρέπει να συγχωνευθούν ώστε να προκύψουν δύο δένδρα, το Τi, το οποίο θα περιέχει τα ζώα με αναγνωριστικά μικρότερα ή ίσα του αναγνωριστικού που αναζητήθηκε και το οποίο θα τοποθετηθεί στην αντίστοιχη εγγραφή του πίνακα οικοσυστημάτων στην θέση i και το δένδρο Τ το οποίο θα περιέχει τα ζώα με αναγνωριστικά μεγαλύτερα του αναγνωριστικού που αναζητήθηκε. Το Τ θα χρησιμοποιείται κάθε φορά για να παραχθεί το δένδρο του επόμενου οικοσυστήματος. Η χρονική πολυπλοκότητα του αλγορίθμου θα πρέπει να είναι Ο(h*<αριθμός_οικοσυστημάτων>), όπου h είναι το ύψος του δένδρου ζώων αρχικά και ο αριθμός οικοσυστημάτων είναι 50. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: D ECOSYSTEMS: <ecosystem 1 >: <aid 1,1 >... <aid 1,n1 > <ecosystem 2 >: <aid 2,1 >... <aid 2,n2 >... <ecosystem 50 >: <aid 50,1 >... <aid 50,n50 > όπου για κάθε i, 1 i 50, ni είναι το µέγεθος του δένδρου ζώων του i-οστού οικοσυστήµατος του πίνακα οικοσυστηµάτων, και για κάθε j, 1 j ni, <aidi,j> είναι το αναγνωριστικό του j-οστού κόµβου στο δένδρο ζώων του i-οστού οικοσυστήµατος, όπως προκύπτει από την ενδοδιατεταγμένη διάσχισή του. Οι κόμβοι θα πρέπει να έχουν εισαχθεί με τέτοιο τρόπο ώστε αν πραγματοποιηθεί ενδοδιατεταγμένη (in-order) διάσχιση στο δένδρο, τα ζώα να προσπελάζονται σε αύξουσα διάταξη ως προς το πεδίο aid.
8 - V <vid> <year> Γεγονός τύπου visit το οποίο σηµατοδοτεί την επίσκεψη ενός επισκέπτη µε αναγνωριστικό vid στο ζωολογικό πάρκο το έτος year. Κατά το γεγονός αυτό αρχικά θα πρέπει να γίνεται αναζήτηση του επισκέπτη µε αναγνωριστικό vid στο δένδρο επισκεπτών. Αν αυτός βρεθεί τότε πρέπει να γίνει ανανέωση του πεδίου last_visit µε την τιµή <year> και να αυξηθεί ο µετρητής visit_count. Αν δεν βρεθεί κόµβος µε αναγνωριστικό vid στο δένδρο, τότε πρέπει να εισάγετε έναν νέο κόµβο µε αυτό το αναγνωριστικό στο δένδρο επισκεπτών. Τα πεδία last_visit και visit_count του νέου κόµβου θα πρέπει να έχουν τιµές <year> και 1, αντίστοιχα. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: V <vid> <year> Level0: Level1:.. Levelh: <vid0,1 : visits0,1 : last_visit0,1> <vid1,1 : visits1,1 : last_visit1,1> <vid1,n1 : visits1,n1 : last_visit1,n1> <vidh,1 : visitsh,1 : last_visith,1> <vidh,nh : visitsh,nh : last_visith,nh> Όπου για κάθε i, 0 i < h, h το ύψος του δένδρου, ni ο αριθμός των κόμβων στο επίπεδο i και για κάθε j, 1 j ni, και <vidi,j : visitsi,j : last_visiti.j> τα πεδία του του j-οστού κόμβου στο επίπεδο i του δένδρου. Πιο συγκεκριμένα, για την εκτύπωση του δένδρου επισκεπτών θα πρέπει να το διατρέξετε κατά πλάτος (Breadthfirst) και να το τυπώσετε ανά επίπεδα. Για να το πετύχετε αυτό θα χρησιμοποιήσετε μία ουρά (queue) στην οποία θα αποθηκεύετε τους κόμβους του κάθε επιπέδου από αριστερά προς τα δεξιά. Είναι αξιοσημείωτο ότι θα πρέπει να εισάγετε dummy κόμβους στην ουρά για την δεικτοδότηση των επιπέδων του δένδρου, ώστε να τυπώνετε το σωστό επίπεδο σε κάθε γραμμή, π.χ. Levelo, Level1 κλπ. - O <years_interval> Γεγονός τύπου delete old visitors το οποίο σηµατοδοτεί τη διαγραφή των επισκεπτών από το δένδρο επισκεπτών για τους οποίους ισχύει ότι η τελευταία επίσκεψή τους στο πάρκο είχε πραγµατοποιηθεί πριν από περισσότερα των <years_interval> έτη. Για να υπολογίσετε πόσα χρόνια έχουν περάσει από την τελευταία επίσκεψη αρκεί να γίνει η αφαίρεση από το τρέχον έτος (2016) του έτους της τελευταίας επίσκεψης του επισκέπτη (πεδίο last_visit). Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: Ο <years_interval> Level0: <vid0,1 : visits0,1 : last_visit0,1> Level1: <vid1,1 : visits1,1 : last_visit1,1>... <vid1,n1 : visits1,n1 : last_visit1,n1>.. Levelh: <vidh,1 : visitsh,1 : last_visith,1> <vidh,nh : visitsh,nh : last_visith,nh> όπου για κάθε i, 0 < i < h, h το ύψος του δένδρου, ni ο αριθμός των κόμβων στο επίπεδο i και για κάθε j, 1 j ni, και <vidi,j : visitsi,j : last_visiti.j> τα πεδία του του j-οστού κόμβου στο επίπεδο i του δένδρου. Η εκτύπωση του δένδρου θα πρέπει να γίνει κι εδώ ανά επίπεδα με την μέθοδο που περιγράφηκε παραπάνω.
9 - H <eid> Γεγονός τύπου hire employee το οποίο σηµατοδοτεί την πρόσληψη ενός νέου εργαζόµενου με αναγνωριστκό eid στο πάρκο. Ο εργαζόµενος αρχικά έχει κενή λίστα ζώων για τα οποία είναι υπεύθυνος και συνεπώς o αντίστοιχος µετρητής (animal_count) έχει τιµή 0. Ο νέος κόμβος θα πρέπει να εισάγεται στο δένδρο εργαζομένων σε χρόνο Ο(h), όπου h είναι το ύψος του δένδρου εργαζομένων, εξασφαλίζοντας την ιδιότητα της ταξινόμησής του. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: H <eid> EMPLOYEES: <eid 1 >, <eid 2 >, <eid n > όπου n είναι το μέγεθος του δένδρου εργαζομένων και για κάθε i, 1 i n, <eidi>, είναι το αναγνωριστικό του i- οστού εργαζομένου, όπως προκύπτει από την ενδοδιατεταγμένη διάσχισή του δένδρου αυτού. Οι κόμβοι θα πρέπει να έχουν εισαχθεί με τέτοιο τρόπο ώστε αν πραγματοποιηθεί ενδοδιατεταγμένη (in-order) διάσχιση στο δένδρο, οι εργαζόμενοι να προσπελάζονται σε αύξουσα διάταξη ως προς το πεδίο eid. - A <eid> <aid> Γεγονός τύπου assign animal σε εργαζόµενο το οποίο σηµατοδοτεί την ανάθεση του ζώου µε αναγνωριστικό aid στον εργαζόµενο µε αναγνωριστικό eid. Το ζώο µε αναγνωριστικό aid προστίθεται στη λίστα των ζώων για τα οποία ο συγκεκριµένος εργαζόµενος είναι υπεύθυνος και αυξάνεται το πεδίο animal_count του εργαζομένου. Ακόμη, πρέπει να γίνει και η κατάλληλη εισαγωγή στον πίνακα κατακερματισμού με βάση το αναγνωριστικό του ζώου. Η κατάλληλη θέση του πίνακα θα βρίσκεται αφού εφαρμοστεί η συνάρτηση κατακερματισμού στο αναγνωριστικό του ζώου. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: A <eid> <aid> EMPLOYEES: <employee 1 : animal_count 1 > : <aid 1,1 >... <aid 1,n1 > <employee 2 : animal_count 2 > : <aid 2,1 >... <aid 2,n2 >... <employee k : animal_count k > : <aid k,1 >... <aid k,nk > όπου k είναι το μέγεθος του δένδρου εργαζομένων, για κάθε i, 1 i k, nk είναι το µέγεθος της λίστας ζώων του i-οστού εργαζοµένου και για κάθε j, 1 j nk, και <aidi.j> είναι το αναγνωριστικό του j-οστού ζώου στην λίστα ζώων του i-οστού εργαζομένου του δένδρου, όπως προκύπτει από την ενδοδιατεταγμένη διάσχισή του. - R <eid> Γεγονός τύπου retirement εργαζοµένου το οποίο σηµατοδοτεί τη συνταξιοδότηση του εργαζοµένου µε αναγνωριστικό eid. Κατά το γεγονός αυτό πρέπει να διαγράψετε από το δένδρο εργαζοµένων τον κόµβο που αντιστοιχεί στον συγκεκριµένο εργαζόµενο. Ο κόμβος αυτός θα πρέπει να εντοπίζεται σε χρόνο O(h). Τα ζώα για τα οποία είναι υπεύθυνος ο εργαζόµενος πρέπει να ανατεθούν σε κάποιον άλλον εργαζόμενο ώστε να συνεχιστεί η οµαλή λειτουργία του πάρκου. Πιο συγκεκριμένα, τα ζώα του εργαζομένου που συνταξιοδοτείται θα μεταφέρονται στον αμέσως προηγούμενο κόμβο σύμφωνα με την ενδοδιατεταγμένη (in-order) διάσχιση
10 του δένδρου εργαζομένων. Σε περίπτωση που ο εργαζόμενος δεν έχει προηγούμενο κόμβο κατά την ενδοδιατεταγμένη διάσχιση, τότε τα ζώα για τα οποία είναι υπεύθυνος θα πρέπει να μεταφέρονται στον δεξιότερο (rightmost) κόμβο του δένδρου (δηλαδή εκείνον που συναντάται τελευταίος στην ενδοδιατεταγμένη διάσχιση του δένδρου). Η διαδικασία εντοπισμού του νέου εργαζόμενου που θα αναλάβει τα ζώα θα πρέπει να εκτελείται σε χρόνο O(d), όπου d είναι το ύψος του κόμβου που διαγράφεται. Αξιοσημείωτο είναι ότι κατά την μεταφορά των ζώων από τον εργαζόμενο που συνταξιοδοτείται, όταν τα ζώα μεταφερθούν στην λίστα ζώων του κατάλληλου εργαζομένου θα πρέπει να ανανεώνεται και η αντίστοιχη εγγραφή στον πίνακα κατακερματισμού για το κάθε ζώο. Συγκεκριμένα, θα πρέπει να εντοπίζετε την εγγραφή στον πίνακα κατακερματισμού με βάση το αναγνωριστικό του ζώου που μεταφέρεται και να ανανεώνετε την τιμή του eid σε αυτήν του καινούργιου εργαζόμενου που το ανέλαβε. Για τα γεγονότα αυτά μπορείτε να κάνετε την παραδοχή ότι το δένδρο εργαζομένων θα περιέχει σίγουρα τουλάχιστον δύο εργαζομένους. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: R <eid> EMPLOYEES: <employee 1 : animal_count 1 > : <aid 1,1 >... <aid 1,n1 > <employee 2 : animal_count 2 > : <aid 2,1 >... <aid 2,n2 >... <employee k : animal_count k > : <aid k,1 >... <aid k,nk > όπου k είναι το μέγεθος του δένδρου εργαζομένων, για κάθε i, 1 i k, nk είναι το µέγεθος της λίστας ζώων του i-οστού εργαζοµένου και για κάθε j, 1 j nk, και <aidi.j> είναι το αναγνωριστικό του j-οστού ζώου στην λίστα ζώων του i-οστού εργαζομένου του δένδρου, όπως προκύπτει από την ενδοδιατεταγμένη διάσχισή του. - X Γεγονός τύπου print ecosystems, κατά το οποίο θα πρέπει να τυπώσετε όλα τα οικοσυστήματα του πίνακα οικοσυστημάτων. Για το κάθε οικοσύστημα θα πρέπει να τυπώνονται όλες οι πληροφορίες του συμπεριλαμβανομένου και του δένδρου ζώων του οικοσυστήματος. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: X ECOSYSTEMS: <ecosystem 1 >: <aid 1,1 >... <aid 1,n1 > <ecosystem 2 >: <aid 2,1 >... <aid 2,n2 >... <ecosystem 50 >: <aid 50,1 >... <aid 50,n50 > όπου για κάθε i, 1 i 50, ni είναι το µέγεθος του δένδρου ζώων του i-οστού οικοσυστήµατος του πίνακα οικοσυστηµάτων, και για κάθε j, 1 j ni, και <aidi,j> είναι το αναγνωριστικό του j-οστού κόµβου στο δένδρο ζώων του i-οστού οικοσυστήµατος, όπως προκύπτει από την ενδοδιατεταγμένη διάσχιση του δένδρου αυτού.
11 - Y Γεγονός τύπου print visitors, κατά το οποίο θα πρέπει να τυπώσεττε το πλήρες δένδρο των επισκεπτών του πάρκου. Η διάσχιση κι εκτύπωση του δένδρου θα πρέπει να γίνει κι εδώ ανά επίπεδα με την μέθοδο που περιγράφηκε παραπάνω στο γεγονός V. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα Υ Level 0: <vid 0,1 : visits 0,1 : last_visit 0,1 > Level 1: <vid 1,1 : visits 1,1 : last_visit 1,1 >, <vid 1,2 : visits 1,2 : last_visit 1,2 >.. Level h: <vid h,1 : visits h,1 : last_visit h,1 > <vid h,n : visits h,n : last_visit h,n > πρέπει να τυπώνει την ακόλουθη πληροφορία: όπου για κάθε i, 0 < i < h, h το ύψος του δένδρου, ni ο αριθμός των κόμβων στο επίπεδο i και για κάθε j, 1 j ni, και <vidi,j : visitsi,j : last_visiti.j> τα πεδία του j-οστού κόμβου στο επίπεδο i του δένδρου. - Z Γεγονός τύπου print employees, κατά το οποίο θα πρέπει να τυπώσετε το δένδρο των εργαζομένων. Για τον κάθε εργαζόμενο θα πρέπει να τυπώνονται όλες οι πληροφορίες του συμπεριλαμβανομένης και της λίστας ζώων του. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: Z EMPLOYEES: <employee 1 : animal_count 1 > : <aid 1,1 >... <aid 1,n1 > <employee 2 : animal_count 2 > : <aid 2,1 >... <aid 2,n2 >... <employee k : animal_count k > : <aid k,1 >... <aid k,nk > όπου k είναι το μέγεθος του δένδρου εργαζομένων, για κάθε i, 1 i k, nk είναι το µέγεθος της λίστας ζώων του i-οστού εργαζοµένου και για κάθε j, 1 j nk, και <aidi.j> είναι το αναγνωριστικό του j-οστού ζώου στην λίστα ζώων του i-οστού εργαζομένου του δένδρου εργαζομένων, όπως προκύπτει από την ενδοδιατεταγμένη διάσχισή του. -E Γεγονός τύπου print animal to employees, κατά το οποίο θα πρέπει να τυπώσετε τον πίνακα κατακερματισμού που αντιστοιχίζει τα ζώα με τους υπεύθυνους για αυτά εργαζομένους. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία:
12 E Chain <0>: <aid 0,1 > : <eid 0,1 > <aid 0,2 > : <eid 0,2 > <aid 0,n0 > : <eid 0,n0 > Chain <j>: <aid j,1 > : <eid j,1 > <aid j,2 > : <eid j,2 > <aid j,nj > : <eid j,nj > όπου για κάθε j είναι η j-οστή αλυσίδα του πίνακα κατακερματισμού και nj είναι ο αριθμός των animal_to_employee structs που έχουν τοποθετηθεί στην αλυσίδας αυτή και για κάθε i, 1 i nj, και <aidj,i> και <eidj,i> είναι τα αναγνωριστικά του ζώου και του εργαζομένου αντίστοιχα. Bonus: Όσοι φοιτητές επιθυμούν, μπορούν να παραδώσουν και μια δεύτερη υλοποίηση στην οποία τα δένδρα του κάθε οικοσυστήματος στον πίνακα οικοσυστημάτων θα είναι τύπου AVL. Η υλοποίηση με την χρήση AVL δένδρων δεν είναι υποχρεωτική, αλλά θα είναι ένα επιπρόσθετο bonus στην βαθμολογία σας. Παραταύτα η υλοποίηση σύμφωνα με την εκτενή περιγραφή που δόθηκε παραπάνω είναι υποχρεωτική και θα πρέπει να παραδοθεί σε κάθε περίπτωση. Είναι αξιοσημείωτο ότι στην υλοποίηση με AVL δένδρα οι κόμβοι του κάθε AVL δένδρου θα έχουν δείκτες και προς του πατρικούς τους κόμβους, τους οποίους θα πρέπει να προσθέσετε εσείς στο κατάλληλο struct στο αρχείο zoo.h στον φάκελο που θα παραδώσετε για αυτήν την υλοποίηση. Επίσης, το γεγονός D θα υλοποιείται διαφορετικά. Συγκεκριμένα, θα πρέπει να διασχίζετε το δένδρο ζώων και κάθε ζώο που συναντάτε θα πρέπει να το εισάγετε στο κατάλληλο AVL δένδρο του οικοσυστήματος στο οποίο ανήκει. Μετά το πέρας της εκτέλεσης του γεγονότος D το αρχικό δένδρο ζώων θα πρέπει να είναι κενό και η πληροφορία που θα τυπώνεται θα είναι η ίδια με το γεγονός D που περιγράφηκε παραπάνω. Όσοι φοιτητές επιλέξουν να υλοποιήσουν και το bonus θα πρέπει να παραδώσουν δύο (2) φακέλους, έναν για κάθε εκδοχή των δένδρων. Ο κάθε φάκελος θα πρέπει να περιέχει οτιδήποτε χρειάζεται για να κάνει compile και να εκτελείται η εργασία. Δοµές Δεδοµένων Στην υλοποίησή σας δεν επιτρέπεται να χρησιµοποιήσετε έτοιµες δοµές δεδοµένων (πχ., ArrayList) είτε η υλοποίηση πραγµατοποιηθεί στη C είτε στη Java. Στη συνέχεια παρουσιάζονται οι δοµές σε C που πρέπει να χρησιµοποιηθούν για την υλοποίηση της παρούσας εργασίας. struct animal { int aid; // the animal id
13 }; struct animal *lc; // pointer to the node s left child struct animal *rc; // pointer to the node s right child struct ecosystem { int eco_id; // the ecosystem s id struct animal * animals_tree; // pointer to the ecosystem s animals tree }; struct visitor { int vid; // the visitor s id int last_visit; // the year the visitor last visited the park int visits; // the total number of visits the visitor has made struct visitor * p; // pointer to the node s parent struct visitor * lc; // pointer to the node s left child struct visitor * rc; // pointer to the node s right child }; struct employee { int eid; // the employee s id int animal_count; // the number of animals the employee is responsible for struct employee_animal * employees_animal_list; // pointer to the employee s animal list struct employee * lc; // pointer to the node s left child struct employee * rc; // pointer to the node s right child } struct employee_animal{ int aid; // the animal s id struct employee_animal * next; // pointer to the next node of the list } struct animal_to_employee { int aid; // the animal s id int eid; // the id of the employee who is responsible for the animal struct animal_to_employee * next; // pointer to the next node of the list
14 } /*The array of the park s ecosystems */ struct ecosystem ecosystems_array [50]; /* global variable, pointer to the root of the animals tree*/ struct animal * animals_tree; /* global variable, pointer to the root of the visitors tree*/ struct visitor * visitors_tree; /*global variable, pointer to the rightmost leaf of the visitors tree*/ struct visitor * rightmost_visitor; /* global variable, pointer to the root of the employees tree*/ struct employee * employees_tree; /* global variable, pointer to the sentinel node of the employees tree*/ struct employee * employees_sentinel; /*The hash table mapping animal ids to employees*/ struct * animal_to_employee ANIMALS_TO_EMPLOYEES[hash_table_size]; int animals_total_count; // The maximum number of animals that are going to live in the park int max_aid; // The maximum animal id int primes[160]; // Array of primes for hashing
ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος
ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2016-2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 14 Νοεµβρίου 2016, ώρα 23:59. Τρόπος
Διαβάστε περισσότεραΠρογραμματιστική Εργασία Μέρος Β. Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης
Προγραμματιστική Εργασία Μέρος Β Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης Διαδικαστικά Παράδοση: Σάββατο, 19 Δεκεμβρίου 2016, ώρα 23:59 Compile & run σε μηχανήματα της σχολής Μέρος της βαθμολογίας Τρόπος
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος
ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 15 Μαΐου 2017, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος
ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 14 Μαΐου 2018, ώρα 23:59 Τρόπος Παράδοσης: Χρησιμοποιώντας
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος
Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών, 4 Μαρτίου 2019 ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 13 Μαϊου
Διαβάστε περισσότεραΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος
ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 3 Απριλίου 2017, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος
ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Κυριακή, 3 Απριλίου 2016, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος
ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος Ημερομηνία Παράδοσης: Κυριακή, 1 Απριλίου 2018, ώρα 23:59 Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος
ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο Μέρος Ημερομηνία Παράδοσης: Κυριακή, 15 Μαίου 2016, ώρα 23:59. Τρόπος Παράδοσης: Χρησιμοποιώντας
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος
ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2017-2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 22 Δεκεμβρίου 2017, ώρα 23:59. Τρόπος
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος
ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 1 Απριλίου 2019, ώρα 23:59 Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος
ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2014-15 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 19 Δεκεμβρίου 2014, ώρα 23:59. Τρόπος
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος
ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 21 Δεκεμβρίου 2018, ώρα 23:59 Τρόπος
Διαβάστε περισσότεραΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος
ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2017-2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 20 Νοεµβρίου 2017, ώρα 23:59. Τρόπος
Διαβάστε περισσότεραHY-486 Αρχές Κατανεμημένου Υπολογισμού
HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Τρίτη 2/5 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε
Διαβάστε περισσότεραΠρογραµµατιστική Εργασία 2 ο Μέρος
Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 20 Νοεµβρίου 2012 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 2 ο Μέρος Ηµεροµηνία
Διαβάστε περισσότεραΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος
Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος
ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2014-15 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία Παράδοσης: Κυριακή, 18 Μαΐου 2015, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος
ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2013-14 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο Μέρος Ημερομηνία Παράδοσης: Τετάρτη, 15 Ιανουαρίου 2014, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΕνότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις
Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του
Διαβάστε περισσότεραHY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο
HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2017-2018 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Δευτέρα 30/4 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο και 3 ο Μέρος
ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 09- Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο και ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 18 Δεκεμβρίου 09, ώρα 08:00 (το πρωί) Τρόπος Παράδοσης:
Διαβάστε περισσότεραΔομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης 1. Στόχος του εργαστηρίου Στόχος του δέκατου εργαστηρίου
Διαβάστε περισσότεραhttps://csd.uoc.gr/~hy240b/current/submit.php
Project HY240b - 1η Φάση Διδάσκουσα: Παναγιώτα Φατούρου Βοηθός: Νικόλαος Μπατσαράς Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Ηράκλειο, 09 Μαρτίου 2018 Εισαγωγή Διαδικαστικά Θεματολογία Δομές Χρηστών
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε
Διαβάστε περισσότεραHY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος
HY240 : Δομές Δεδομένων Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος Εισαγωγή Στο 2 ο μέρος της εργασίας θα πρέπει να γίνουν τροποποιήσεις στο πρόγραμμα που προέκυψε κατά την υλοποίηση του
Διαβάστε περισσότεραΠρογραµµατιστική Εργασία 1 ο Μέρος
Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 4 Νοεµβρίου 2011 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία
Διαβάστε περισσότεραΠρογραµµατιστική Εργασία 1 ο Μέρος
ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2013-14 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία Παράδοσης: Παρασκευή, 29 Νοεµβρίου 2013, ώρα 23:59. Τρόπος Παράδοσης:
Διαβάστε περισσότεραΠρογραµµατιστική Εργασία - 2 ο Μέρος
Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 1 εκεµβρίου 2011 ΗΥ240: οµές εδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016 Εισαγωγή Τα
Διαβάστε περισσότεραΔιάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος
Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών 12 Οκτωβρίου 2012 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2011-12 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 1 ο Μέρος Ημερομηνία
Διαβάστε περισσότεραΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research
ΑΛΓΟΡΙΘΜΟΙ ΜΕ C ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής CMOR Lab Computational Methodologies and Operations Research Δέντρα (5) Τ ένα δέντρο i ένας κόμβος στο επίπεδο k j ένας κόμβος στο επίπεδο k+1 } :
Διαβάστε περισσότεραΔιάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:
Διαβάστε περισσότεραΑλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες
Διαβάστε περισσότεραHY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο
HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Δέυτερη Προγραμματιστική Εργασία Προθεσμία παράδοσης: 19/6/2017 1. Γενική Περιγραφή Στην δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε
Διαβάστε περισσότεραΔομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής
Ενότητα 8: Γραμμική Αναζήτηση και Δυαδική Αναζήτηση-Εισαγωγή στα Δέντρα και Δυαδικά Δέντρα-Δυαδικά Δέντρα Αναζήτησης & Υλοποίηση ΔΔΑ με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v.
ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 ένδρα Κόµβοι (nodes) Ακµές (edges) Ουρά και κεφαλή ακµής (tail, head) Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) Μονοπάτι (path) Πρόγονος απόγονος
Διαβάστε περισσότεραΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος
Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών 12 Οκτωβρίου 2009 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 1 ο Μέρος Ημερομηνία
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ
ΠΝΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΣ ΔΔΟΜΝΩΝ ΚΙ ΛΓΟΡΙΘΜΟΙ ΗΜΡΟΜΗΝΙ: 14/11/2018 ΔΙΓΝΩΣΤΙΚΟ ΠΝΩ Σ ΔΝΔΡΙΚΣ ΔΟΜΣ ΚΙ ΓΡΦΟΥΣ Διάρκεια: 45 λεπτά Ονοματεπώνυμο:. ρ. Ταυτότητας:. ΒΘΜΟΛΟΓΙ ΣΚΗΣΗ ΒΘΜΟΣ
Διαβάστε περισσότεραΔιάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 26: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας -Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι
Διαβάστε περισσότεραProject HY240a - 1η Φάση Διδάσκουσα: Παναγιώτα Φατούρου Βοηθός: Νικόλαος Μπατσαράς Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Ηράκλειο, 24 Οκτωβρίου 2018 Διαδικαστικά Θεματολογία Δομές Μεγάλου Αλεξάνδρου
Διαβάστε περισσότεραΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 1 ο Μέρος
Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 15 Οκτωβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία Παράδοσης:
Διαβάστε περισσότεραΔιασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1
Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα
Διάλεξη Ε4: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Δυαδικά Δένδρα Αναζήτησης Ισοζυγισμένα Δένδρα & 2-3 Δένδρα Διδάσκων: Κωνσταντίνος
Διαβάστε περισσότεραΘεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }
Πανεπιστήµιο Ιωαννίνων, Τµήµα Πληροφορικής 2 Νοεµβρίου 2005 Η/Υ 432: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκού Έτους 2005-2006 Παναγιώτα Φατούρου Ηµεροµηνία Παράδοσης 1 ο Σετ Ασκήσεων Θεωρητικό Μέρος:
Διαβάστε περισσότεραΆσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).
Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).
Διαβάστε περισσότεραΔιάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα
Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου
Διαβάστε περισσότεραΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ
ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενων από έναν
Διαβάστε περισσότεραΔιάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή
Διαβάστε περισσότεραMy Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας
My Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας ΗΥ-240 Χειμερινό Εξάμηνο 2013 Διδάσκουσα: Παναγιώτα Φατούρου This presentation by Foivos S. Zakkak is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike
Διαβάστε περισσότεραΚατ οίκον Εργασία 3 Σκελετοί Λύσεων
Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 (α) Έστω Α(n) και Κ(n) ο αριθμός των ακμών και ο αριθμός των κόμβων ενός αυστηρά δυαδικού δένδρου με n φύλλα. Θέλουμε να αποδείξουμε για κάθε n 1 την πρόταση
Διαβάστε περισσότεραΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ. ΗΥ240 - Παναγιώτα Φατούρου 1
ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 ένδρα Κόµβοι (nodes) Ακµές (edges) Ουρά και κεφαλή ακµής (tail, head) Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) Μονοπάτι (path) Πρόγονος απόγονος
Διαβάστε περισσότεραΔυαδικά Δένδρα Αναζήτησης, Δένδρα AVL
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Υλικό από τις σηµειώσεις Ν. Παπασπύρου, 2006 Δέντρα δυαδικής αναζήτησης Δενδρικές δοµές δεδοµένων στις οποίες Όλα τα στοιχεία στο αριστερό υποδέντρο της ρίζας είναι
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεμένες Δομές - Λίστες Διασυνδεδεμένες δομές δεδομένων Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα. Η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση
Διαβάστε περισσότεραΕνότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)
Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή
Διαβάστε περισσότεραΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων
ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες και
Διαβάστε περισσότεραΕνότητα 7 Ουρές Προτεραιότητας
Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω
Διαβάστε περισσότεραΆσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).
Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 2 Σύνολα (Sets) Τα
Διαβάστε περισσότεραΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία
ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2015-2016 Δεύτερη Προγραμματιστική Εργασία Γενική περιγραφή Στη δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε ένα διομότιμο σύστημα (Peer-to-
Διαβάστε περισσότεραInsert(K,I,S) Delete(K,S)
ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ & ΛΕΞΙΚΑ Φατούρου Παναγιώτα 1 Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενα από έναν αριθµό και
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
- Δυαδικά Δένδρα (binary trees) - Δυαδικά Δένδρα Αναζήτησης (binary search trees) 1 Δυαδικά Δένδρα Ορισμοί Λειτουργίες Υλοποιήσεις ΑΤΔ Εφαρμογές 2 Ορισμοί (αναδρομικός ορισμός) Ένα δένδρο t είναι ένα πεπερασμένο
Διαβάστε περισσότεραSanta Claus Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας
Santa Claus Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας ΗΥ-240 Χειμερινό Εξάμηνο 2015 Διδάσκουσα: Παναγιώτα Φατούρου Παρουσίαση: Βασίλειος Θεοδοσιάδης (vtheodos@ics.forth.gr) Πέμπτη, 29 Οκτωβρίου 2015
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 20: Δυαδικό Δέντρο Αναζήτησης Δυαδικό δέντρο Κάθε κόμβος «γονέας» περιέχει δύο δείκτες που δείχνουν σε δύο κόμβους «παιδιά» του ιδίου τύπου. Αν οι δείκτες προς αυτούς
Διαβάστε περισσότεραΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 7 Ουρές Προτεραιότητας ΗΥ240 - Παναγιώτα Φατούρου 2 Ουρές
Διαβάστε περισσότεραΠληροφορική 2. Δομές δεδομένων και αρχείων
Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες
Διαβάστε περισσότεραΚατ οίκον Εργασία 3 Σκελετοί Λύσεων
Άσκηση 1 Χρησιµοποιούµε τη δοµή Κατ οίκον Εργασία 3 Σκελετοί Λύσεων typedef struct Node int data; struct node *lchild; struct node *rbro; node; και υποθέτουµε πως ένα τυχαίο δένδρο είναι υλοποιηµένο ως
Διαβάστε περισσότεραΕνότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)
Ενότητα 9 (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή ισχύει ότι S i S j =, για κάθε i,j µε i j και S 1 S k = U. Λειτουργίες q MakeSet(X): επιστρέφει
Διαβάστε περισσότεραΔομές δεδομένων (2) Αλγόριθμοι
Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student
Διαβάστε περισσότεραΔομές Δεδομένων και Αλγόριθμοι
Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 16 Δένδρα (Trees) 1 / 42 Δένδρα (Trees) Ένα δένδρο είναι ένα συνδεδεμένο γράφημα χωρίς κύκλους Για κάθε
Διαβάστε περισσότεραΗΥ240 - Παναγιώτα Φατούρου 1
ΕΝΟΤΗΤΑ 3 ΔΕΝΔΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 Δένδρα Ένα δένδρο Τ αποτελείται από ένα σύνολο από κόµβους µεταξύ των οποίων ορίζεται µια σχέση γονέα-παιδιού µε τις εξής ιδιότητες: q Αν το Τ δεν είναι το
Διαβάστε περισσότεραΟ ΑΤΔ Λεξικό. Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος. Υλοποιήσεις
Ο ΑΤΔ Λεξικό Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος Υλοποιήσεις Πίνακας με στοιχεία bit (0 ή 1) (bit vector) Λίστα ακολουθιακή (πίνακας) ή συνδεδεμένη Είναι γνωστό το μέγιστο
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 3η: Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 3η: Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 3 ΔΕΝΔΡΑ ΗΥ240 - Παναγιώτα Φατούρου 2 Δένδρα Ένα δένδρο Τ αποτελείται από
Διαβάστε περισσότεραΔιάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας (Priority
Διαβάστε περισσότεραδιεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t)
Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 18: ιασυνδεµένες οµές - Λίστες ιασυνδεδεµένες δοµές δεδοµένων Η µνήµη ενός πίνακα δεσµεύεται συνεχόµενα. Η πρόσβαση στο i-οστό στοιχείο είναι άµεσηκαθώς η διεύθυνση του
Διαβάστε περισσότεραΟι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες
Δομές δεδομένων Πίνακες Οι πίνακες είναι το πιο απλό «μέσο» αποθήκευσης ομοειδούς πληροφορίας. Χρησιμοποιούν ακριβώς όση μνήμη χρειάζεται για την αποθήκευση της πληροφορίας Επιτρέπουν την προσπέλαση άμεσα
Διαβάστε περισσότερα#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 21: Εισαγωγή σε Δενδρικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Εισαγωγή σε δενδρικές δομές δεδομένων, -Ορισμοί και πράξεις - Αναπαράσταση δενδρικών δομών δεδομένων
Διαβάστε περισσότεραΔιάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ισοζυγισμένα Δέντρα Υλοποίηση AVL δέντρων Εισαγωγή Κόμβων και Περιστροφές σε AVL δέντρα
Διαβάστε περισσότεραΕνότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις
ΗΥ2, Ενότητα : Ασκήσεις και Λύσεις Ενότητα : Κατακερματισμός Ασκήσεις και Λύσεις Άσκηση 1 Χρησιμοποιήστε τη συνάρτηση κατακερματισμού της διαίρεσης ως πρωτεύουσα συνάρτηση κατακερματισμού και τη συνάρτηση
Διαβάστε περισσότεραΔυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:
Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι
Διαβάστε περισσότεραΑφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής ισαγωγή στην πιστήμη των Υπολογιστών 2015-16 λγόριθμοι και ομές εδομένων (IΙ) (γράφοι και δένδρα) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης φηρημένες
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραΗΥ360 Αρχεία και Βάσεις εδοµένων
ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης Tutorial B-Trees, B+Trees Μπαριτάκης Παύλος 2018-2019 Ιδιότητες B-trees Χρήση για μείωση των προσπελάσεων στον δίσκο Επέκταση των Binary Search Trees
Διαβάστε περισσότεραΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)
ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό
Διαβάστε περισσότεραΔομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με
Διαβάστε περισσότεραΔομές Δεδομένων Ενότητα 5
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 5: Δυαδικά Δένδρα Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΔομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 5 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ
Διαβάστε περισσότεραένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (pat
ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (path) o Πρόγονος απόγονος (ancestor, descendant)
Διαβάστε περισσότεραΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ
ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 1 Σύνολα (Sets) q Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U (universe) αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών σύνολα
Διαβάστε περισσότεραΔιάλεξη 21η: Απλά Συνδεδεμένες Λίστες
Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Απλές Λίστες CS100, 2015-2016 1 / 10 Δομές δεδομένων Ορισμός:
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 11: Τεχνικές Κατακερματισμού. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.
Ενότητα 11: Τεχνικές Κατακερματισμού Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται
Διαβάστε περισσότεραΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Γιάννης Κουτσονίκος Επίκουρος Καθηγητής Οργάνωση Δεδομένων Δομή Δεδομένων: τεχνική οργάνωσης των δεδομένων με σκοπό την
Διαβάστε περισσότεραΔομές Δεδομένων. Δημήτρης Μιχαήλ. Ουρές Προτεραιότητας. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Δομές Δεδομένων Ουρές Προτεραιότητας Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρά Προτεραιότητας Το πρόβλημα Έχουμε αντικείμενα με κλειδιά και θέλουμε ανά πάσα στιγμή
Διαβάστε περισσότεραΔυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1
Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2018-2019 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)
Διαβάστε περισσότεραΔομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 8 Ξένα Σύνολα
Διαβάστε περισσότεραΚεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας
Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας Περιεχόμενα 14.1 Διωνυμικά Δένδρα... 255 14.2 Διωνυμικές Ουρές... 258 14.1.1 Εισαγωγή στοιχείου σε διωνυμική ουρά... 258 14.1.2 Διαγραφή μεγίστου από διωνυμική
Διαβάστε περισσότερα