Προγραµµατιστική Εργασία 2 ο Μέρος

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

Download "Προγραµµατιστική Εργασία 2 ο Μέρος"

Transcript

1 Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 20 Νοεµβρίου 2012 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 2 ο Μέρος Ηµεροµηνία Παράδοσης: Παρασκευή, 14 εκεµβρίου 2012, ώρα 23:59. Τρόπος Παράδοσης: Χρησιµοποιώντας το πρόγραµµα submit. Πληροφορίες για το πώς λειτουργεί το submit παρέχονται στην ιστοσελίδα του µαθήµατος. Αναλυτική Περιγραφή Ζητούµενης Υλοποίησης Για κάθε δεινόσαυρο υπάρχει ένα struct Dinosaur µε τα εξής πεδία (προσέξτε πως έχει προστεθεί ένα ακόµη πεδίο σε αυτή τη δοµή, συγκριτικά µε το πρώτο µέρος της προγραµµατιστικής εργασίας): DId: αναγνωριστικό του δεινόσαυρου, µοναδικό για κάθε δεινόσαυρο, ανεξαρτήτως αν αυτός είναι χορτοφάγος ή σαρκοφάγος και ανεξαρτήτως του είδους στο οποίο ανήκει ο δεινόσαυρος. Fed: το πεδίο αυτό είναι 0 αν ο δεινόσαυρος είναι χορτοφάγος και 1 αν είναι σαρκοφάγος. SpieceId: ένας ακέραιος (αναγνωριστικό είδους) που δηλώνει το είδος του δεινόσαυρου. SpreadId: αναγνωριστικό του κοπαδιού στο οποίο ανήκει ο δεινόσαυρος. Age: ηλικία του δεινόσαυρου. Strength: αριθµός που εκφράζει τη δύναµη του δεινόσαυρου. Ο αριθµός αυτός µειώνεται κάθε φορά που ο δεινόσαυρος εµπλέκεται σε έναν πόλεµο, ενώ δεινόσαυροι που δεν έχουν αρκετά µεγάλη δύναµη για να ανταπεξέλθουν στον πόλεµο πεθαίνουν. next: δείκτης στο επόµενο στοιχείο της αλυσίδας του πίνακα κατακερµατισµού στην οποία ανήκει ο δεινόσαυρος. Το πρόγραµµα σας θα πρέπει να διατηρεί έναν πίνακα κατακερµατισµού DIN[M], ο οποίος περιέχει πληροφορίες για όλους τους δεινόσαυρους στη Παγγαία. Κάθε στοιχείο DIN[i] του πίνακα αυτού περιέχει έναν δείκτη στο πρώτο στοιχείο µιας αλυσίδας που περιέχει εκείνα τα struct Dinosaur για τα οποία το id τους έχει τιµή κατακερµατισµού ίση µε i. Άρα, ο πίνακας κατακερµατισµού επιλύει συγκρούσεις µε τη µέθοδο των αλυσίδων, όπου οι αλυσίδες είναι ταξινοµηµένες ως προς το αναγνωριστικό (Did) των δεινοσαύρων. Το µέγεθος του πίνακα κατακερµατισµού M θα πρέπει να επιλέγεται από εσάς προσεχτικά και θα πρέπει να είστε σε θέση να δικαιολογήσετε την επιλογή σας. Το ίδιο θα πρέπει να ισχύει και για τη συνάρτηση κατακερµατισµού που θα χρησιµοποιήσετε. Ο πίνακας κατακερµατισµού δεινοσαύρων παρουσιάζεται στο Σχήµα 1. 1

2 Σχήµα 1 Όπως προαναφέρθηκε, οι δεινόσαυροι κατηγοριοποιούνται είτε ως φυτοφάγοι ή ως σαρκοφάγοι. Πληροφορίες για κάθε κατηγορία αποθηκεύονται στα στοιχεία ενός πίνακα Eater[2], όπως φαίνεται στο Σχήµα 2. Ο πίνακας αυτός ονοµάζεται πίνακας διατροφικών κατηγοριών δεινοσαύρων. Eater[0] Eater[1] Σχήµα 2 Τα στοιχεία του πίνακα Eater[2] είναι τύπου Feed (struct Feed). Κάθε ένα από αυτά αποτελείται από τα εξής πεδία: o Έναν δείκτη, SpieceR, ο οποίος δείχνει στη ρίζα ενός διπλά-συνδεδεµένου, ταξινοµηµένου, ως προς το SpieceId, δένδρου (δηλαδή διπλά-συνδεδεµένου δένδρου δυαδικής αναζήτησης) µε κόµβο φρουρό που ονοµάζεται δένδρο ειδών δεινοσαύρων. Κάθε κόµβος του δένδρου περιέχει πληροφορίες για κάποιο είδος δεινόσαυρων. o Έναν δείκτη, SpreadR, ο οποίος δείχνει στη ρίζα ενός διπλά-συνδεδεµένου, προδιατεταγµένα-ταξινοµηµένου (δες άσκηση 3 του 3 ου σετ ασκήσεων), ως προς το SpreadId, δένδρου που ονοµάζεται δένδρο κοπαδιών δεινοσαύρων. Κάθε κόµβος του 2

3 δένδρου αυτού περιέχει πληροφορίες για κάποιο κοπάδι δεινοσαύρων. Το δένδρο αυτό δεν έχει κόµβο φρουρό. Η µορφή κάθε στοιχείου του πίνακα διατροφικών κατηγοριών παρουσιάζεται στο Σχήµα 3. SpieceR SpreadR Σχήµα 3 Κάθε κόµβος του δένδρου ειδών δεινοσαύρων είναι ένα struct τύπου SpieceNode που αποτελείται από τα ακόλουθα πεδία: Έναν ακέραιο SpieceId που αποτελεί το αναγνωριστικό του είδους. Έναν δείκτη SpieceDp που δείχνει στον πρώτο στοιχείο µιας λίστας δεινοσαύρων που ανήκουν σε αυτό το είδος. H λίστα αυτή λέγεται λίστα δεινοσαύρων του τύπου SpieceId. Έναν δείκτη p που δείχνει στον πατέρα του κόµβου. Έναν δείκτη lc που δείχνει στο αριστερό παιδί του κόµβου. Έναν δείκτη rc που δείχνει στο δεξιό παιδί του κόµβου. Κάθε στοιχείο της λίστας δεινοσαύρων τύπου SpieceId περιέχει στοιχεία τύπου struct SpieceDin. Το struct αυτό έχει τα ακόλουθα πεδία: int DId: το αναγνωριστικό του δεινόσαυρου (προσέξτε πως αυτό το πεδίο έχει αλλάξει συγκριτικά µε το 1 ο µέρος της προγραµµατιστικής εργασίας). struct SpieceDin *next: δείκτης στο επόµενο στοιχείο της λίστας. Η λίστα δεινοσαύρων τύπου SpieceId είναι µη ταξινοµηµένη και υλοποιεί το ευριστικό Μετακίνησης στην Αρχή (move to front). Οµοίως, κάθε κόµβος του δένδρου κοπαδιών δεινοσαύρων είναι ένα struct που αποτελείται από τα ακόλουθα πεδία: Έναν ακέραιο spreadid που αποτελεί το αναγνωριστικό του κοπαδιού. Έναν δείκτη spreaddr που δείχνει στη ρίζα ενός ταξινοµηµένου δένδρου δεινοσαύρων που ανήκουν σε αυτό το κοπάδι. Το δένδρο αυτό, που ονοµάζεται δένδρο του κοπαδιού SpreadId, είναι (ενδοδιατεταγµένα) ταξινοµηµένο ως προς τη δύναµη (Strength) των δεινοσαύρων (είναι δηλαδή δένδρο δυαδικής αναζήτησης), δεν είναι διπλά-συνδεδεµένο και δεν έχει κόµβο φρουρό. Έναν δείκτη p που δείχνει στον πατέρα του κόµβου. Έναν δείκτη lc που δείχνει στο αριστερό παιδί του κόµβου. Έναν δείκτη rc που δείχνει στο δεξί παιδί του κόµβου. Κάθε κόµβος του δένδρου του κοπαδιού SpreadId περιέχει στοιχεία τύπου struct SpreadDin. Το struct αυτό έχει τα ακόλουθα πεδία: struct Dinosaur *d: δείκτης σε struct τύπου Dinosaur που περιέχει πληροφορίες για τον δεινόσαυρο. 3

4 struct SpreadDin *lc: δείκτης στο αριστερό παιδί του κόµβου. struct SpreadDin *rc: δείκτης στο δεξιό παιδί του κόµβου. Οι δοµών δεδοµένων που περιγράφονται παραπάνω παρουσιάζονται στο Σχήµα 4. 4

5 Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 20 Νοεµβρίου

6 Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 12 Οκτωβρίου 2012 Τρόπος Λειτουργίας Προγράµµατος Το πρόγραµµα που θα δηµιουργηθεί θα πρέπει να εκτελείται καλώντας την ακόλουθη εντολή: <name of executable file> <input-file> <MAX_AGE> <M> όπου <name of executable file> είναι το όνοµα του εκτελέσιµου αρχείου του προγράµµατος (π.χ., a.out), <MAX_AGE> είναι ένας ακέραιος που υποδηλώνει πόσα το πολύ χρόνια ζει κάθε δεινόσαυρος, <M > είναι είναι το µέγεθος του πίνακα κατακερµατισµού και <input-file> είναι το όνοµα ενός αρχείου εισόδου που περιέχει γεγονότα των ακόλουθων µορφών: o C <N> <Fed> <SpieceId> <SpreadId> <Id 1 > <Id 2 >... <Id N > <Strength 1 > <Strength 2 >... <Strength N >: Γεγονός τύπου Create το οποίο σηµατοδοτεί τη δηµιουργία <N> νέων δεινοσαύρων στο οικοσύστηµα µε αναγνωριστικά <Id 1 >,, <Id N > και δύναµη <Strength 1 > <Strength 2 >... <Strength N >, αντίστοιχα. Το πεδίο <Fed> είναι 0 ή 1 και παρέχει την πληροφορία του αν οι νέοι δεινόσαυροι είναι χορτοφάγοι ή σαρκοφάγοι, αντίστοιχα. Το πεδίο <SpieceId> είναι το αναγνωριστικό του είδους στο οποίο ανήκουν οι νέοι δεινόσαυροι. Επιπρόσθετα, οι νέοι δεινόσαυροι ανήκουν στο κοπάδι µε αναγνωριστικό <SpreadId>. Εποµένως, τα <Ν>, <Fed>, <SpieceId>, και <SpreadId> είναι ακέραιοι αριθµοί που παρέχουν τις παραπάνω πληροφορίες για το δεινόσαυρο. Αν το <SpieceId> ισούται µε - 1, τότε δηµιουργούνται δεινόσαυροι όλων των ειδών µε τον ακόλουθο τρόπο. Αν υπάρχουν k είδη δεινοσαύρων στο οικοσύστηµα µε τις δεδοµένες διατροφικές συνήθειες, δηµιουργούνται N/k νέοι δεινόσαυροι σε κάθε είδος (οι πρώτοι N/k από αυτούς έχουν αναγνωριστικά <Id 1 >, <Id 2 >,, <Id N/k >, οι επόµενοι N/k έχουν αναγνωριστικά <Id N/k +1 >, <Id N/k +2 >,, <Id 2 N/k >, κ.ο.κ) Όλοι ανήκουν ωστόσο στο ίδιο κοπάδι και όλοι έχουν τις ίδιες διατροφικές συνήθειες. Η ηλικία των δεινοσαύρων πρέπει να επιλέγεται µε τυχαίο τρόπο (χρησιµοποιώντας την rand()), λαµβάνοντας υπ όψιν ότι η µέγιστη ηλικία είναι MAX_AGE. Ο πίνακας κατακερµατισµού δεινοσαύρων θα πρέπει να ενηµερωθεί προκειµένου να περιέχει τους νέους δεινόσαυρους. Επιπρόσθετα, αν <SpieceId> -1 και ο δεινόσαυρος ανήκει σε κάποιο είδος που δεν υπάρχει στο σύστηµα, θα πρέπει να προστεθεί µια νέα εγγραφή στο δένδρο ειδών δεινοσαύρων και <Ν> νέες εγγραφές στη λίστα δεινοσαύρων του είδους στο οποίο ανήκει ο δεινόσαυρος. Αν <SpieceId> = -1, για κάθε είδος του δένδρου ειδών δεινοσαύρων του Eater[<Fed>] πρέπει να γίνουν Ν/k εισαγωγές στη λίστα δεινοσαύρων του είδους. Αλλαγές θα πρέπει να γίνουν στο δένδρο κοπαδιών δεινοσαύρων καθώς και στο δένδρο του κοπαδιού στο οποίο ανήκουν οι νέοι δεινόσαυροι. Οι αλλαγές αυτές πρέπει να γίνουν µε κατάλληλο τρόπο ώστε τα δένδρα αυτά να µην χάνουν τις ιδιότητες που έχουν (π.χ., την ταξινόµηση). Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: C <N> <Fed> <SpieceId> <SpreadId> <Id 1 > <Id 2 >... <Id N > <Strength 1 > <Strength 2 >... <Strength N > DONE Eater[0] SpieceTREE = <SpieceId1>, List of Spiece <SpieceId1> = <d 1 1, d 2 1,, d r1 1 > < SpieceId2>, List of Spiece <SpieceId2> = <d 1 2, d 2 2,, d r2 2 > <SpieceIdk>, 6

7 Eater[1] List of Spiece <SpieceIdk> = <d 1 k, d 2 k,, d rk k > SpreadTree = <SpreadId1>, Dinosaurs of Spread <SpreadId1> = <d 1 1, d 2 1,, d m1 1 > < SpreadId2>, Dinosaurs of Spread <SpreadId2> = <d 1 2, d 2 2,, d m2 2 > SET OF DINOSAURS: <SpreadIdl>, Dinosaurs of Spread <SpreadIdl> = <d 1 l, d 2 l,, d ml l > <τυπώνεται παρόµοια πληροφορία όπως και για την κατηγορία Eater[0]> <η τύπωση της πληροφορίας πρέπει να ακολουθεί παρόµοιο format όπως εκείνο της πληροφορίας για την κατηγορία Eater[0]> <DId 1, Fed 1, SpieceId 1, SpreadId 1, Age 1, Strength 1 > <DId 2, Fed 2, SpieceId 2, SpreadId 2, Age 2, Strength 2 > <DId h, Fed h, SpieceId h, SpreadId h, Age h, Strength h > όπου k, l είναι το πλήθος στοιχείων στα δένδρα ειδών δεινοσαύρων και κοπαδιών, αντίστοιχα, της κατηγορίας Eater[0] και <d 1 i, d 2 i,, d ri i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευµένα στη λίστα δεινοσαύρων του είδους <SpieceId i > (όπου έχουµε υποθέσει πως αυτά είναι r i στο πλήθος). Επίσης, <d 1 i, d 2 i,, d mi i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευµένα στο δένδρο δεινοσαύρων του κοπαδιού <SpreadId i > (όπου έχουµε υποθέσει πως αυτά είναι m i στο πλήθος). Τέλος, h είναι το συνολικό πλήθος των στοιχείων στις αλυσίδες του πίνακα κατακερµατισµού των δεινοσαύρων και <DId i, Fed i, Spiece i, Spread i, Age i, Strength i >, 1 i k, είναι τo αναγνωριστικό, η διατροφική συνήθεια, το είδος, το κοπάδι, η ηλικία και η δύναµη του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή στην ακολουθία των εγγραφών όλων των αλυσίδων (θεωρώντας ότι εξετάζουµε την κάθε αλυσίδα µε τη σειρά ξεκινώντας από την DIN[0] και καταλήγοντας στην DIN[M-1]). o B <N> <DId> <Id 1 > <Id 2 >... <Id N > <Strength 1 > <Strength 2 >... <Strength N >: Γεγονός τύπου Born το οποίο σηµατοδοτεί τη γέννηση <N> νέων δεινοσαύρων στο οικοσύστηµα µε αναγνωριστικά <Id 1 >, <Id 2 >,..., <Id N > και δύναµη <Strength 1 >, <Strength 2 >,..., <Strength N >, αντίστοιχα. Οι δεινόσαυροι αυτοί είναι παιδιά της δεινόσαυρου µε αναγνωριστικό <DId> και άρα έχουν τις ίδιες διατροφικές συνήθειες, ανήκουν στο ίδιο κοπάδι και είναι του ιδίου είδους µε τη µητέρα τους, δηλαδή µε το δεινόσαυρο µε αναγνωριστικό <DId>. Η ηλικία τους τη στιγµή της γέννησης είναι 0. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: B <N> <DId> <Id 1 > <Id 2 >... <Id N > <Strength 1 > <Strength 2 >... <Strength N > DONE Parent Dinosaur: Eater = <Fed>, Spc = <SpieceId>, Spr = <SpreadId>,Age = <Age>,Str = <Strength> SpieceLIST of <SpieceId> = <d 1, d 2,, d k > SpreadTree of <SpreadId> = <d 1, d 2,, d r > 7

8 SET OF DINOSAURS: <DId 1, Fed 1, SpieceId 1, SpreadId 1, Age 1, Strength 1 > <DId 2, Fed 2, SpieceId 2, SpreadId 2, Age 2, Strength 2 > <DId h, Fed h, SpieceId h, SpreadId h, Age h, Strength h > όπου <Fed>, <SpieceId>, <SpreadId>, <Age>, <Strength> υποδηλώνουν τις διατροφικές συνήθειες, το είδος, το κοπάδι, την ηλικία και τη δύναµη του γονικού δεινόσαυρου. Εποµένως, οι νέοι δεινόσαυροι ανήκουν στο είδος µε αναγνωριστικό <SpieceId> και στο κοπάδι µε αναγνωριστικό <SpreadId>. Επιπρόσθετα, k είναι το πλήθος στοιχείων στη λίστα δεινοσαύρων του είδους <SpieceId> και <d 1, d 2,, d k > είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευµένα στη λίστα αυτή. Επίσης, r είναι το πλήθος στοιχείων στο δένδρο δεινοσαύρων του κοπαδιού <SpreadId> και <d 1, d 2,, d r > είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευµένα στο δένδρο αυτό. Τέλος, h είναι το συνολικό πλήθος των στοιχείων στις αλυσίδες του πίνακα κατακερµατισµού των δεινοσαύρων και <DId i, Fed i, Spiece i, Spread i, Age i, Strength i >, 1 i k, είναι τo αναγνωριστικό, η διατροφική συνήθεια, το είδος, το κοπάδι, η ηλικία και η δύναµη του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή στην ακολουθία των εγγραφών όλων των αλυσίδων (θεωρώντας ότι εξετάζουµε την κάθε αλυσίδα µε τη σειρά ξεκινώντας από την DIN[0] και καταλήγοντας στην DIN[M-1]). o W <Fed1> <SpreadId1> <Fed2> <SpreadId2> <Strength>: Γεγονός τύπου War που σηµατοδοτεί έναν διαπληκτισµό µεταξύ του κοπαδιού της διατροφικής κατηγορίας <Fed1> µε αναγνωριστικό <SpreadId1> και εκείνου της διατροφικής κατηγορίας <Fed2> µε αναγνωριστικό <SpreadId2>. Η δύναµη όλων των δεινόσαυρων και των δύο κοπαδιών µειώνεται κατά <Strength>. Οι δεινόσαυροι των οποίων η δύναµη µειώνεται σε µια τιµή µικρότερη ή ίση του µηδενός πεθαίνουν. Αν τα δύο κοπάδια αποτελούνται από δεινόσαυρους µε τις ίδιες διατροφικές συνήθειες (π.χ. οι δεινόσαυροι και στα δύο κοπάδια είναι χορτοφάγοι), τα κοπάδια συνενώνονται. ιαφορετικά, τα κοπάδια παραµένουν µε όσα µέλη τους έχουν αποµείνει. Το κοπάδι µε αναγνωριστικό <Spread1> θα πρέπει να αναζητηθεί στην διατροφική κατηγορία δεινοσαύρων Eater[<Fed1>]. Το δένδρο δεινοσαύρων του κοπαδιού <Spread1> διατρέχεται και για κάθε δεινόσαυρο η δύναµή του µειώνεται κατά <Strength>. Αν η δύναµη του δεινόσαυρου γίνει ίση ή µικρότερη του 0, ο δεινόσαυρος διαγράφεται. Αυτό πραγµατοποιείται ως εξής: (1) ο δεινόσαυρος διαγράφεται από το δένδρο δεινοσαύρων του συγκεκριµένου κοπαδιού, (2) ο δεινόσαυρος διαγράφεται από τη λίστα δεινοσαύρων του είδους στο οποίο αυτός ανήκει, και τέλος (3) ο δεινόσαυρος διαγράφεται από τον πίνακα κατακερµατισµού δεινοσαύρων. Παρόµοιες ενέργειες γίνονται για τους δεινόσαυρους του κοπαδιού µε αναγνωριστικό <Spread 2 > της διατροφικής κατηγορίας Eater[<Fed2>]. Αν το δένδρο του κοπαδιού <SpreadId1> ή το δένδρο του κοπαδιού <SpreadId2> είναι κενό µετά τις διαγραφές, το αντίστοιχο στοιχείο του δένδρου κοπαδιών δεινοσαύρων πρέπει να διαγραφεί. ιαγραφές στοιχείων ενδέχεται να χρειάζονται και στο δένδρο ειδών δεινοσαύρων, αν η λίστα για κάποιο συγκεκριµένο είδος µείνει κενή. Αν <Fed1> = <Fed2> τότε τα κοπάδια <SpreadId1> και <SpreadId2> πρέπει να συγχωνευτούν. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: W <Fed1> <SpreadId1> <Fed2> <SpreadId2> <Strength> DONE Eater[<Fed1>] SpieceTREE = <SpieceId1>, 8

9 Eater[<Fed2>] List of Spiece <SpieceId1> = <d 1 1, d 2 1,, d r1 1 > < SpieceId2>, List of Spiece <SpieceId2> = <d 1 2, d 2 2,, d r2 2 > <SpieceIdk>, List of Spiece <SpieceIdk> = <d 1 k, d 2 k,, d rk k > SpreadTREE = <SpreadId1>, Tree of Spread <SpreadId1> = <d 1 1, d 2 1,, d m1 1 > < SpreadId2>, Tree of Spread <SpreadId2> = <d 1 2, d 2 2,, d m2 2 > <SpreadIdl>, Tree of Spread <SpreadIdl> = <d 1 l, d 2 l,, d ml l > <Αν <Fed1> <Fed2>, παρόµοια πληροφορία όπως και για την κατηγορία Εater[<Fed1>]> <η τύπωση της πληροφορίας πρέπει να ακολουθεί παρόµοιο format όπως εκείνο της πληροφορίας για την κατηγορία Eater[0]> SET OF DINOSAURS: <DId 1, Fed 1, SpieceId 1, SpreadId 1, Age 1, Strength 1 > <DId 2, Fed 2, SpieceId 2, SpreadId 2, Age 2, Strength 2 > <DId h, Fed h, SpieceId h, SpreadId h, Age h, Strength h > όπου k, l είναι το πλήθος στοιχείων στα δένδρα ειδών δεινοσαύρων και κοπαδιών, αντίστοιχα, της διατροφικής κατηγορίας Eater[0] και <d 1 i, d 2 i,, d ri i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευµένα στη λίστα δεινοσαύρων του είδους <SpieceId i > (όπου έχουµε υποθέσει πως αυτά είναι r i στο πλήθος). Επίσης, <d 1 i, d 2 i,, d mi i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευµένα στο δένδρο δεινοσαύρων του κοπαδιού <SpreadId i > (όπου έχουµε υποθέσει πως αυτά είναι m i στο πλήθος). Τέλος, h είναι το συνολικό πλήθος των στοιχείων στις αλυσίδες του πίνακα κατακερµατισµού των δεινοσαύρων και <DId i, Fed i, Spiece i, Spread i, Age i, Strength i >, 1 i k, είναι τo αναγνωριστικό, η διατροφική συνήθεια, το είδος, το κοπάδι, η ηλικία και η δύναµη του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή στην ακολουθία των εγγραφών όλων των αλυσίδων (θεωρώντας ότι εξετάζουµε την κάθε αλυσίδα µε τη σειρά ξεκινώντας από την DIN[0] και καταλήγοντας στην DIN[M-1]). o S <Fed> <SpreadId> <Strength>: Γεγονός τύπου Split που σηµατοδοτεί το διαχωρισµό του κοπαδιού µε αναγνωριστικό <SpreadId> της διατροφικής κατηγορίας <Fed> σε δύο διαφορετικά κοπάδια. Συγκεκριµένα, οι δεινόσαυροι του κοπαδιού <SpreadId> που έχουν δύναµη µεγαλύτερη από <Strength> µένουν στο κοπάδι ενώ εκείνοι µε µικρότερη δύναµη δηµιουργούν ένα νέο κοπάδι. 9

10 (Προσέξτε πως τώρα ο διαχωρισµός γίνεται βάσει της δύναµης και όχι βάσει της ηλικίας όπως γινόταν στο 1 ο µέρος) Οι ενέργειες που θα πρέπει να πραγµατοποιηθούν είναι οι εξής: (1) εισαγωγή ενός νέου στοιχείου που θα αντιστοιχεί στο νέο κοπάδι στο δένδρο κοπαδιών δεινοσαύρων του Eater[<Fed>], (2) εισαγωγή των δεινοσαύρων που απαιτούνται στο δένδρο δεινοσαύρων του νέου κοπαδιού, και (3) αλλαγές θα πρέπει να γίνουν και στα struct Dinosaur των δεινοσαύρων αυτών. Το γεγονός αυτό θα πρέπει να εκτελείται σε χρόνο Ο(h), όπου h είναι το ύψος του δένδρο του κοπαδιού µε αναγνωριστικό <SpreadId> της διατροφικής κατηγορίας <Fed>. Για να επιτευχθεί αυτό, εκτελέστε µια αναζήτηση για το <Strength>, αποκόβοντας τους δείκτες που «κρέµονται» αριστερά και δεξιά του µονοπατιού. Στη συνέχεια, συγχωνεύστε τα δένδρα του προκύπτοντος δάσους. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: S <Fed> <SpreadId> <Strength> DONE Eater[<Fed>] SpreadTREE = <SpreadId1>, Tree of Spread <SpreadId1> = <d 1 1, d 2 1,, d r1 1 > < SpreadId2>, Tree of Spread <SpreadId2> = <d 1 2, d 2 2,, d r2 2 > <SpreadIdk>, Tree of Spread <SpreadIdk> = <d 1 k, d 2 k,, d rk k > SET OF DINOSAURS: <DId 1, SpreadId 1 >, <DId 2, SpreadId 2 >,, <DId h, SpreadId h > όπου k είναι το πλήθος των στοιχείων στο δένδρο κοπαδιών δεινοσαύρων της διατροφικής κατηγορίας Eater[<Fed>] και <d 1 i, d 2 i,, d ri i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευµένα στο δένδρο δεινοσαύρων του κοπαδιού <SpreadId i > (όπου έχουµε υποθέσει πως αυτά είναι r i στο πλήθος). Τέλος, h είναι το συνολικό πλήθος των στοιχείων στις αλυσίδες του πίνακα κατακερµατισµού των δεινοσαύρων και <DId i, Fed i, Spiece i, Spread i, Age i, Strength i >, 1 i k, είναι τo αναγνωριστικό, η διατροφική συνήθεια, το είδος, το κοπάδι, η ηλικία και η δύναµη του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή στην ακολουθία των εγγραφών όλων των αλυσίδων (θεωρώντας ότι εξετάζουµε την κάθε αλυσίδα µε τη σειρά ξεκινώντας από την DIN[0] και καταλήγοντας στην DIN[M-1]). o Y <Ν>: Γεγονός τύπου Year. Το γεγονός αυτό σηµατοδοτεί την αύξηση της ηλικίας όλων των δεινόσαυρων κατά <Ν> έτη. Οι δεινόσαυροι που αποκτούν ηλικία µεγαλύτερη του MAX_AGE πεθαίνουν, όπου MAX_AGE είναι µια σταθερά που παρέχεται από τη γραµµή εντολών κατά την εκκίνηση του προγράµµατος. Η δύναµη κάθε δεινόσαυρου επίσης αυξάνει κατά µία ποσότητα που είναι συνάρτηση της τρέχουσας ηλικίας του κάθε δεινόσαυρου. Συγκεκριµένα, διατρέχουµε τη λίστα των δεινόσαυρων και αυξάνουµε την ηλικία του κάθε δεινόσαυρου κατά <N>. Αν ο δεινόσαυρος αποκτά ηλικία µεγαλύτερη του MAX_AGE διαγράφεται από το σύστηµα. Επιπρόσθετα, αυξάνουµε τη δύναµη του κάθε δεινόσαυρου κατά (1 + (MAX_AGE-Age)/MAX_AGE) * 12 * <N>, 10

11 όπου Age είναι η τρέχουσα ηλικία του κάθε δεινόσαυρου. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: Y DONE SET OF DINOSAURS: <DId 1, Fed 1, SpieceId 1, SpreadId 1, Age 1, Strength 1 > <DId 2, Fed 2, SpieceId 2, SpreadId 2, Age 2, Strength 2 > <DId h, Fed h, SpieceId h, SpreadId h, Age h, Strength h > όπου h είναι το συνολικό πλήθος των στοιχείων στις αλυσίδες του πίνακα κατακερµατισµού των δεινοσαύρων και <DId i, Fed i, Spiece i, Spread i, Age i, Strength i >, 1 i k, είναι τo αναγνωριστικό, η διατροφική συνήθεια, το είδος, το κοπάδι, η ηλικία και η δύναµη του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή στην ακολουθία των εγγραφών όλων των αλυσίδων (θεωρώντας ότι εξετάζουµε την κάθε αλυσίδα µε τη σειρά ξεκινώντας από την DIN[0] και καταλήγοντας στην DIN[M-1]). o P: Γεγονός τύπου Print που σηµατοδοτεί την εκτύπωση των δοµών δεδοµένων του συστήµατος. Συγκεκριµένα, για κάθε µία από τις διατροφικές κατηγορίες δεινοσαύρων, θα πρέπει να εκτυπώνεται το δένδρο ειδών δεινόσαυρων και το δένδρο κοπαδιών δεινόσαυρων της κατηγορίας αυτής. Επίσης, θα πρέπει να εκτυπώνονται τα στοιχεία του πίνακα κατακερµατισµού δεινοσαύρων. Συγκεκριµένα, οι πληροφορίες που τυπώνονται είναι οι εξής: P DONE Eater[0] Eater[1] SpieceTREE = <SpieceId1>, List of Spiece <SpieceId1> = <d 1 1, d 2 1,, d r1 1 > < SpieceId2>, List of Spiece <SpieceId2> = <d 1 2, d 2 2,, d r2 2 > <SpieceIdk>, List of Spiece <SpieceIdk> = <d 1 k, d 2 k,, d rk k > SpreadTree = <SpreadId1>, Tree of Spread <SpreadId1> = <d 1 1, d 2 1,, d m1 1 > < SpreadId2>, Tree of Spread <SpreadId2> = <d 1 2, d 2 2,, d m2 2 > <SpreadIdl>, Tree of Spread <SpreadIdl> = <d 1 l, d 2 l,, d ml l > 11

12 <τυπώνεται παρόµοια πληροφορία όπως και για την κατηγορία Eater[0]> <η τύπωση της πληροφορίας πρέπει να ακολουθεί παρόµοιο format όπως εκείνο της πληροφορίας για την κατηγορία Eater[0]> SET OF DINOSAURS: <DId 1, Fed 1, SpieceId 1, SpreadId 1, Age 1, Strength 1 > <DId 2, Fed 2, SpieceId 2, SpreadId 2, Age 2, Strength 2 > <DId h, Fed h, SpieceId h, SpreadId h, Age h, Strength h > όπου k, l είναι το πλήθος στοιχείων στα δένδρα ειδών δεινοσαύρων και κοπαδιών, αντίστοιχα, της διατροφικής κατηγορίας Eater[0] και <d 1 i, d 2 i,, d ri i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευµένα στη λίστα δεινοσαύρων του είδους <SpieceId i > (όπου έχουµε υποθέσει πως αυτά είναι r i στο πλήθος). Επίσης, <d 1 i, d 2 i,, d mi i >, 1 i k, είναι τα αναγνωριστικά των δεινόσαυρων που είναι αποθηκευµένα στο δένδρο δεινοσαύρων του κοπαδιού <SpreadId i > (όπου έχουµε υποθέσει πως αυτά είναι m i στο πλήθος). Τέλος, h είναι το συνολικό πλήθος των στοιχείων στις αλυσίδες του πίνακα κατακερµατισµού των δεινοσαύρων και <DId i, Fed i, Spiece i, Spread i, Age i, Strength i >, 1 i k, είναι τo αναγνωριστικό, η διατροφική συνήθεια, το είδος, το κοπάδι, η ηλικία και η δύναµη του δεινόσαυρου που αντιστοιχεί στη i-οστή εγγραφή στην ακολουθία των εγγραφών όλων των αλυσίδων (θεωρώντας ότι εξετάζουµε την κάθε αλυσίδα µε τη σειρά ξεκινώντας από την DIN[0] και καταλήγοντας στην DIN[M-1]). Το πρόγραµµα που θα δηµιουργηθεί πρέπει να διαβάζει το αρχείο εισόδου και να εκτελεί µε τη σειρά όλα τα γεγονότα που περιγράφονται σε αυτό. BONUS 1 (20 %) Αντικαταστήστε το ταξινοµηµένο δυαδικό δένδρο ενός συγκεκριµένου κοπαδιού µε ένα νηµατικό δένδρο (το οποίο και πάλι θα πρέπει να είναι ταξινοµηµένο ως προς την ενδοδιατεταγµένη όπως ήταν αρχικά). Πληροφορίες για νηµατικά δένδρα που είναι ταξινοµηµένα ως προς την ενδοδιατεταγµένη διάσχιση, όπως ζητείται εδώ (και όχι ως προς την προδιατεταγµένη διάσχιση που µελετήσατε στο 3 ο σετ ασκήσεων) παρουσιάζονται στην ιστοσελίδα του µαθήµατος. BONUS 2 (20 %) Αντικαταστήστε το ταξινοµηµένο δυαδικό δένδρο ειδών δεινοσαύρων (το οποίο έχει κόµβο φρουρό) µε ένα AVL δένδρο (µε κόµβο φρουρό). Μπορείτε να αγνοήσετε τις διαγραφές που πρέπει να γίνονται στο δένδρο αυτό (δηλαδή να µην τις κάνετε, αλλάζοντας απλά το δείκτη SpieceDp της εκάστοτε εγγραφής που πρέπει να διαγραφεί µε την τιµή NULL). Αυτό θα σας επιτρέψει να αποφύγεται την υλοποίηση της AVLDelete() που είναι µεγαλύτερης δυσκολίας. οµές εδοµένων Στο Σχήµα 4 παρουσιάζονται οι δοµές σε C που πρέπει να χρησιµοποιηθούν για την υλοποίηση της εργασίας. typedef struct Dinosaur { int Did; int Fed; 12

13 int SpieceId; int SpreadId; int Age; int Strength; struct Dinosaur *next; } DINOSAUR; // στοιχεία λίστας δεινοσαύρων ενός συγκεκριµένου είδους typedef struct SpieceDin { int Did; struct SpieceDin *next; } SPIECEDIN; // κόµβοι δένδρου ειδών δεινοσαύρων typedef struct SpieceNode { int SpieceId; struct SpieceDin *SpieceDp; struct SpieceNode *p; struct SpieceNode *lc; struct SpieceNode *rc; } SPIECENODE; // κόµβοι δένδρου δεινοσαύρων ενός συγκεκριµένου κοπαδιού typedef struct SpreadDin { DINOSAUR *d; struct SpreadDin *lc; struct SpreadDin *rc; } SPREADDIN; // κόµβοι δένδρου κοπαδιών typedef struct SpreadNode { int SpreadId; struct SpreadDin *SpreadDp; struct SpreadNode *p; struct SpreadNode *lc; struct SpreadNode *rc; } SPREADNODE; // στοιχεία πίνακα Eater typedef struct Feed { SPIECENODE *SpieceR; SPREADNODE *SpreadR; } FEED; // πίνακας Eater FEED Eater[2]; // πίνακας κατακερµατισµού DINOSAUR DIN[M]; 13

14 Οδηγίες και Συµβουλές για την Οµαλή ιεκπεραίωση της Εργασίας Η εργασία θα πρέπει να πραγµατοποιηθεί σε βήµατα. Ο κάθε φοιτητής είναι υπεύθυνος να αποφασίσει ποια βήµατα ταιριάζουν στον τρόπο εργασίας του. Στη συνέχεια, παρατίθεται µια δυνητική ακολουθία βηµάτων που θα µπορούσε να ακολουθηθεί για την οµαλή διεκπεραίωση της εργασίας. Βήµα 1: Αντιγράψτε τον κώδικα του Βήµατος 5 της πρώτης φάσης και τροποποιήστε κατάλληλα τη λίστα που υλοποιήσατε εκεί προκειµένου να υλοποιήσετε το Ευριστικό Μετακίνησης στην Αρχή. Όταν σιγουρευτείτε πως το Ευριστικό εκτελείται σωστά, συνεχίστε µε το επόµενο βήµα. Βήµα 2: Ξεκινήστε (σε ένα νέο αρχείο) υλοποιώντας ένα µέρος του γεγονότος C (Create). Για την υλοποίηση του γεγονότος αυτού πρέπει να υλοποιήσετε το δένδρο ειδών δεινοσαύρων. Το δένδρο αυτό είναι διπλά-συνδεδεµένο και ταξινοµηµένο, ως προς το SpieceId, µε κόµβο φρουρό. Στη φάση αυτή, αφήστε το πεδίο SpieceDp ίσο µε NULL. Φτιάξτε διαδικασίες DBSG-TreeInsert, DBSG-TreeDelete και DBSG-TreeLookUp για ένα διπλά-συνδεδεµένο, ταξινοµηµένο δυαδικό δένδρο µε κόµβο φρουρό προκειµένου να πραγµατοποιείτε εισαγωγές, διαγραφές και αναζητήσεις, αντίστοιχα, στο δένδρο αυτό. Τα στοιχεία του δένδρου αυτού είναι τύπου SpieceNode (όπου στη φάση αυτή, το πεδίο SpieceDp, αντίστοιχα, είναι ίσο µε NULL). ηµιουργήστε µια διαδικασία DBSG-TreePrint() για την εκτύπωση των στοιχείων του δένδρου η οποία θα σας βοηθήσει να ελέγξετε την ορθότητα των διαδικασιών που περιγράφονται παραπάνω. ηµιουργήστε τον παραπάνω κώδικα σε ένα δικό σας αρχείο και φτιάξτε µια δική σας main() για να ελέγξετε ότι ο κώδικας που υλοποιεί τις λειτουργίες του δένδρου λειτουργεί σωστά. Όταν είστε σίγουροι για αυτό συνεχίστε στο επόµενο βήµα. Βήµα 3: Συνεχίστε µε την υλοποίηση του γεγονότος C, δηµιουργώντας τον πίνακα Eater, κάθε στοιχείο του οποίου δεικτοδοτεί ένα δένδρο ειδών δεινοσαύρων (µην ασχοληθείτε στην παρούσα φάση µε τα υπόλοιπα πεδία). ηµιουργήστε ένα αντίγραφο του βασικού αρχείου (εκείνου που περιέχει τη συνάρτηση main() που σας παρείχαν οι βοηθοί) και βάλτε σε σχόλια τον κώδικα που αναφέρεται σε γεγονότα άλλα από το C. Στο βήµα αυτό θα δουλέψετε µόνο µε γεγονότα τύπου C. Αποµονώστε στα test_files που σας παρείχαν οι βοηθοί τα γεγονότα τύπου C και εκτελέστε το πρόγραµµά σας µόνο για τέτοια γεγονότα. Το γεγονός τύπου C έχει βέβαια µόνο µερικά υλοποιηθεί αφού δεν υπάρχουν ακόµη οι λίστες δεινοσαύρων συγκεκριµένων ειδών, τα δένδρα δεινοσαύρων συγκεκριµένων κοπαδιών, ούτε το δένδρο κοπαδιών ή ο πίνακας κατακερµατισµού δεινοσαύρων. Έτσι, στο βήµα αυτό απλά ελέγχετε αν τα στοιχεία του δένδρου ειδών κάθε διατροφικής κατηγορίας ενηµερώνονται σωστά. Γεγονότα C που αναφέρονται στην προσθήκη νέων δεινόσαυρων σε κάποιο ήδη υπάρχον είδος δεν προκαλούν στη φάση αυτή καµία ενέργεια. Βήµα 4: Συνεχίστε µε την υλοποίηση του γεγονότος C, συγχωνεύοντας τον κώδικα που γράψατε στο Βήµα 1 παραπάνω (λίστες που υλοποιούν το Ευριστικό Μετακίνησης στην Αρχή) και τον κώδικα του Βήµατος 3 ώστε να υλοποιήσετε τις λίστες δεινοσαύρων ενός συγκεκριµένου είδους. Τελειώστε µε το βήµα αυτό, ενηµερώνοντας κατάλληλα το SpieceDp πεδίο κάθε στοιχείου του δένδρου ειδών µιας διατροφικής κατηγορίας ώστε να δείχνει στη ρίζα του δένδρου δεινοσαύρων του συγκεκριµένου είδους στο οποίο αναφέρεται. Με τον τρόπο αυτό έχετε φτιάξει ένα δένδρο από λίστες (αφού κάθε στοιχείο του δένδρου ειδών αποθηκεύει ένα δείκτη στο πρώτο στοιχείο της λίστας δεινοσαύρων που ανήκουν στο συγκεκριµένο είδος). Βήµα 5: Σε ένα νέο αρχείο γράψτε κώδικα που να υλοποιεί το δένδρο κοπαδιών δεινοσαύρων. Το δένδρο αυτό είναι διπλά-συνδεδεµένο, προδιατεταγµένα-ταξινοµηµένο ως προς το πεδίο αναγνωριστικό. Φτιάξτε διαδικασίες DPS- TreeInsert, DPS-TreeDelete και DPS-TreeLookUp για ένα διπλά-συνδεδεµένο, προδιατεταγµένα-ταξινοµηµένο, προκειµένου να πραγµατοποιείτε εισαγωγές, διαγραφές και αναζητήσεις, αντίστοιχα, στο δένδρο αυτό. Τα στοιχεία του δένδρου αυτού µπορούν να είναι τύπου SpreadNode (όπου στη φάση αυτή, το πεδίο SpreadDp είναι προσωρινά ίσο µε NULL). ηµιουργήστε µια διαδικασία DPS-TreePrint() για την εκτύπωση των στοιχείων του δένδρου η οποία θα σας βοηθήσει να ελέγξετε την ορθότητα των διαδικασιών που περιγράφονται παραπάνω. ηµιουργήστε τον παραπάνω κώδικα σε ένα δικό σας αρχείο και φτιάξτε µια δική σας main() για να ελέγξετε ότι ο κώδικας που υλοποιεί τις λειτουργίες του δένδρου λειτουργεί σωστά. Όταν είστε σίγουροι για αυτό συνεχίστε στο επόµενο βήµα. Βήµα 6: Σε ένα νέο αρχείο αντιγράψτε τον κώδικα που φτιάξατε στο Βήµα 2 και τροποποιήστε τον κατάλληλα ώστε να υλοποιεί ταξινοµηµένα, ως προς το Strength, δένδρα χωρίς κόµβο φρουρό, τα οποία δεν είναι διπλά-συνδεδεµένα. Οι κόµβοι των δένδρων αυτών είναι τύπου SpreadDin. Προσέξτε ότι στο δένδρο ενός συγκεκριµένου κοπαδιού θα πρέπει να µπορείτε να εισάγετε ένα σύνολο από στοιχεία. Σκεφτείτε ποιος είναι ο πιο αποδοτικός τρόπος για να επιτευχθεί αυτό. 14

15 Στο βήµα αυτό, τροποποιήστε το struct SpreadDin και αντί να σώζεται στο πεδίο d έναν δείκτη σε ένα struct Dinosaur µπορείτε να αποθηκεύεται εκεί απλά το αναγνωριστικό του δεινόσαυρου. Αυτό θα σήµαινε βέβαια πως όλες τις άλλες πληροφορίες για τον εκάστοτε δεινόσαυρο τις αγνοείτε στην παρούσα φάση. Φτιάξτε διαδικασίες BS-TreeInsert, BS-TreeDelete και BS-TreeLookUp για ένα απλά-συνδεδεµένο, ταξινοµηµένο δυαδικό δένδρο χωρίς κόµβο φρουρό προκειµένου να πραγµατοποιείτε εισαγωγές, διαγραφές και αναζητήσεις, αντίστοιχα, στο δένδρο αυτό. ηµιουργήστε µια διαδικασία BS-TreePrint() για την εκτύπωση των στοιχείων του δένδρου η οποία θα σας βοηθήσει να ελέγξετε την ορθότητα των διαδικασιών που περιγράφονται παραπάνω. Φτιάξτε µια δική σας main() για να ελέγξετε ότι ο κώδικας που υλοποιεί τις λειτουργίες του δένδρου λειτουργεί σωστά. Όταν είστε σίγουροι για αυτό συνεχίστε στο επόµενο βήµα. Βήµα 7: Συνενώστε τους κώδικες των Βηµάτων 5 και 6 για να τελειώσετε την υλοποίηση των δένδρων κοπαδιών. Ενηµερώστε κατάλληλα το SpreadDp πεδίο κάθε στοιχείου του δένδρου κοπαδιών µιας διατροφικής κατηγορίας ώστε να δείχνει στη ρίζα του δένδρου δεινοσαύρων του κοπαδιού στο οποίο αναφέρεται. Με τον τρόπο αυτό έχετε φτιάξει ένα δένδρο από δένδρα (αφού κάθε στοιχείο του δένδρου κοπαδιών αποθηκεύει ένα δείκτη στη ρίζα ενός δένδρου δεινοσαύρων που ανήκουν στο συγκεκριµένο κοπάδι). ηµιουργήστε ένα µέρος της Print(), η οποία θα τυπώνει µόνο την εξής πληροφορία: P DONE Eater[0] Eater[1] SpieceLIST = <SpieceId1>, List of Spiece <SpieceId1> = <d 1 1, d 1 2,, d 1 r1 > < SpieceId2>, List of Spiece <SpieceId2> = <d 2 1, d 2 2,, d 2 r2 > <SpieceIdk>, List of Spiece <SpieceIdk> = <d k 1, d k 2,, d k rk > SpreadList = <SpreadId1>, List of Spread <SpreadId1> = <d 1 1, d 2 1,, d m1 1 > < SpreadId2>, List of Spread <SpreadId2> = <d 1 2, d 2 2,, d m2 2 > <SpreadIdl>, List of Spread <SpreadIdl> = <d 1 l, d 2 l,, d ml l > <τυπώνεται παρόµοια πληροφορία όπως και για την κατηγορία Eater[0]> <η τύπωση της πληροφορίας πρέπει να ακολουθεί παρόµοιο format όπως εκείνο της πληροφορίας για την κατηγορία Eater[0]> Βήµα 8: Στο βήµα αυτό θα υλοποιήσετε τον πίνακα κατακερµατισµού δεινοσαύρων που επιλύει συγκρούσεις µε τη µέθοδο των αλυσίδων, όπου οι αλυσίδες είναι ταξινοµηµένες ως προς το αναγνωριστικό (Did) των δεινοσαύρων. Κάθε στοιχείο του πίνακα αυτού περιέχει έναν δείκτη στο πρώτο στοιχείο µιας αλυσίδας που περιέχει εκείνα τα struct Dinosaur για τα οποία το id τους έχει τιµή κατακερµατισµού ίση µε i. Γράψτε κώδικα που θα υλοποιεί τον πίνακα αυτό σε ένα εντελώς νέο αρχείο. Φτιάξτε διαδικασίες ΗΤ_Insert, ΗΤ_Delete και ΗΤ_LookUp οι οποίες πραγµατοποιούν εισαγωγές, διαγραφές και αναζητήσεις, αντίστοιχα, στα στοιχεία των αλυσίδων του πίνακα κατακερµατισµού. ηµιουργήστε µια διαδικασία ΗΤ_Print() για την εκτύπωση των στοιχείων των αλυσίδων του πίνακα η οποία θα σας βοηθήσει να ελέγξετε την ορθότητα των διαδικασιών που περιγράφονται παραπάνω. Τροποποιήστε κατάλληλα τη main() του Βήµατος 1 για να ελέγξετε ότι ο κώδικας που υλοποιεί τις λειτουργίες του πίνακα κατακερµατισµού λειτουργεί σωστά. Όταν είστε σίγουροι για αυτό συνεχίστε στο επόµενο βήµα. Βήµα 9: οκιµάστε να τρέξετε γεγονότα όλων των ειδών πάνω στον πίνακα κατακερµατισµού δεινοσαύρων. Χρησιµοποιήστε εποµένως, αυτούσια τα test_files και τη main που θα σας παρέχουν οι βοηθοί και ελέγξετε πως 15

16 εκτελούνται σωστά (αν και µε µη-πλήρη τρόπο αφού λείπουν οι περισσότερες δοµές της εργασίας από τον κώδικα του βήµατος αυτού) όλων των ειδών τα γεγονότα στη λίστα δεινοσαύρων. Βήµα 10: Συνδυάστε τους κώδικες που δηµιουργήσατε στο Βήµατα 8 και 6 ώστε να πάρετε µια πρώτη έκδοση της εργασίας σας µε όλες τις δοµές που ζητούνται υλοποιηµένες. Ολοκληρώστε την υλοποίηση των γεγονότων C, B, Y και P. Βήµα 11: Υλοποιήστε το γεγονός τύπου S. Βεβαιωθείτε πως και αυτό το γεγονός εκτελείται σωστά. Βήµα 12: Υλοποιήστε το γεγονός τύπου W. Αυτό θα σας επιτρέψει να πειραµατιστείτε µε διαγραφές και άλλες πολύπλοκες λειτουργίες πάνω στις δοµές. Βήµα 13: Ελέγξετε την ορθότητα του κώδικα που δηµιουργήσατε εκτελώντας τον κώδικά σας σε όλα τα αρχεία εκτέλεσης που θα σας παρέχουν οι βοηθοί του µαθήµατος. Επιπρόσθετα, δηµιουργήστε τα δικά σας αρχεία γεγονότων για να ελέγξετε µε περισσότερη ακρίβεια την ορθότητα του κώδικά σας. 16

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών 12 Οκτωβρίου 2012 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2011-12 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 1 ο Μέρος Ημερομηνία

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

Προγραµµατιστική Εργασία 1 ο Μέρος

Προγραµµατιστική Εργασία 1 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 4 Νοεµβρίου 2011 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία

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

Προγραµµατιστική Εργασία - 2 ο Μέρος

Προγραµµατιστική Εργασία - 2 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 1 εκεµβρίου 2011 ΗΥ240: οµές εδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2011-12 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών, 4 Μαρτίου 2019 ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 13 Μαϊου

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 15 Μαΐου 2017, ώρα 23:59. Τρόπος Παράδοσης:

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 1 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 1 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 15 Οκτωβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 14 Μαΐου 2018, ώρα 23:59 Τρόπος Παράδοσης: Χρησιμοποιώντας

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

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 3 Απριλίου 2017, ώρα 23:59. Τρόπος Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 1 ο Μέρος Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών 12 Οκτωβρίου 2009 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 1 ο Μέρος Ημερομηνία

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

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2016-2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 14 Νοεµβρίου 2016, ώρα 23:59. Τρόπος

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

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Κυριακή, 3 Απριλίου 2016, ώρα 23:59. Τρόπος Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο και 3 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2009-10 Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο και 3 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 09- Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο και ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 18 Δεκεμβρίου 09, ώρα 08:00 (το πρωί) Τρόπος Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος Ημερομηνία Παράδοσης: Κυριακή, 1 Απριλίου 2018, ώρα 23:59 Τρόπος Παράδοσης:

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 1 Απριλίου 2019, ώρα 23:59 Τρόπος Παράδοσης:

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

Προγραμματιστική Εργασία Μέρος Β. Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης

Προγραμματιστική Εργασία Μέρος Β. Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης Προγραμματιστική Εργασία Μέρος Β Δρακωνάκης Κώστας Παπαϊωάννου Αντώνης Διαδικαστικά Παράδοση: Σάββατο, 19 Δεκεμβρίου 2016, ώρα 23:59 Compile & run σε μηχανήματα της σχολής Μέρος της βαθμολογίας Τρόπος

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2014-15 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 19 Δεκεμβρίου 2014, ώρα 23:59. Τρόπος

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2017-2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 22 Δεκεμβρίου 2017, ώρα 23:59. Τρόπος

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

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2014-15 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία Παράδοσης: Κυριακή, 18 Μαΐου 2015, ώρα 23:59. Τρόπος Παράδοσης:

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

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος HY240 : Δομές Δεδομένων Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος Εισαγωγή Στο 2 ο μέρος της εργασίας θα πρέπει να γίνουν τροποποιήσεις στο πρόγραμμα που προέκυψε κατά την υλοποίηση του

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

Θεωρητικό Μέρος. 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); } }

Θεωρητικό Μέρος. 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 ο Σετ Ασκήσεων Θεωρητικό Μέρος:

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2018-2019 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Παρασκευή, 21 Δεκεμβρίου 2018, ώρα 23:59 Τρόπος

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο Μέρος Ημερομηνία Παράδοσης: Κυριακή, 15 Μαίου 2016, ώρα 23:59. Τρόπος Παράδοσης: Χρησιμοποιώντας

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2016-2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2 ο Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 19 Δεκεμβρίου 2016, ώρα 23:59. Τρόπος

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού

HY-486 Αρχές Κατανεμημένου Υπολογισμού HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Τρίτη 2/5 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

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

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος ΗΥ240: Δοµές Δεδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2017-2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος Ηµεροµηνία Παράδοσης: Δευτέρα, 20 Νοεµβρίου 2017, ώρα 23:59. Τρόπος

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

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος

ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου. Προγραμματιστική Εργασία 2 ο Μέρος ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος 2013-14 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο Μέρος Ημερομηνία Παράδοσης: Τετάρτη, 15 Ιανουαρίου 2014, ώρα 23:59. Τρόπος Παράδοσης:

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

Προγραµµατιστική Εργασία 1 ο Μέρος

Προγραµµατιστική Εργασία 1 ο Μέρος ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2013-14 ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 1 ο Μέρος Ηµεροµηνία Παράδοσης: Παρασκευή, 29 Νοεµβρίου 2013, ώρα 23:59. Τρόπος Παράδοσης:

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

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

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

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2017-2018 Πρώτη Προγραμματιστική Εργασία Προθεσμία παράδοσης: Δευτέρα 30/4 στις 23:59. 1. Γενική Περιγραφή Στην πρώτη προγραμματιστική εργασία καλείστε

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

https://csd.uoc.gr/~hy240b/current/submit.php

https://csd.uoc.gr/~hy240b/current/submit.php Project HY240b - 1η Φάση Διδάσκουσα: Παναγιώτα Φατούρου Βοηθός: Νικόλαος Μπατσαράς Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Ηράκλειο, 09 Μαρτίου 2018 Εισαγωγή Διαδικαστικά Θεματολογία Δομές Χρηστών

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

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με

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

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα?

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα? Κόκκινα-Μαύρα ένδρα (Red-Black Trees) Ένα κόκκινο-µαύρο δένδρο είναι ένα δυαδικό δένδρο αναζήτησης στο οποίο οι κόµβοι µπορούν να χαρακτηρίζονται από ένα εκ των δύο χρωµάτων: µαύρο-κόκκινο. Το χρώµα της

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες και

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

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

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

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

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

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

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2015-2016 Δεύτερη Προγραμματιστική Εργασία Γενική περιγραφή Στη δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε ένα διομότιμο σύστημα (Peer-to-

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

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

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

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Καθηγητής. Γουνόπουλος Άσκηση 1 Σκοπός της εργασίας αυτής είναι η κατανόηση της εσωτερικής λειτουργίας

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΕΠΛ 035 - ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΓΙΑ ΗΛΕΚΤΡΟΛΟΓΟΥΣ ΜΗΧΑΝΙΚΟΥΣ ΚΑΙ ΜΗΧΑΝΙΚΟΥΣ ΥΠΟΛΟΓΙΣΤΩΝ Ακαδηµαϊκό έτος 2017-2018 Υπεύθυνος εργαστηρίου: Γεώργιος

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ ΜΑΘΗΜΑ ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΑΚΑ. ΕΤΟΣ 2012-13 Ι ΑΣΚΟΝΤΕΣ Ιωάννης Βασιλείου Καθηγητής, Τοµέας Τεχνολογίας

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2012-2013 Προθεσµία: 13/1/13, 22:00 Περιεχόµενα Διαδικαστικά Εκφώνηση άσκησης (Στάδιο 0, Στάδιο 1, Στάδιο 2, Στάδιο 3, Στάδιο 4, Στάδιο 5) Οδηγίες

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

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

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

Insert(K,I,S) Delete(K,S)

Insert(K,I,S) Delete(K,S) ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ & ΛΕΞΙΚΑ Φατούρου Παναγιώτα 1 Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενα από έναν αριθµό και

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

Project HY240a - 1η Φάση Διδάσκουσα: Παναγιώτα Φατούρου Βοηθός: Νικόλαος Μπατσαράς Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Ηράκλειο, 24 Οκτωβρίου 2018 Διαδικαστικά Θεματολογία Δομές Μεγάλου Αλεξάνδρου

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2015-2016 Προθεσµία: Πέµπτη 17/12/2015, 22:00 Διαβάστε πριν ξεκινήσετε Διαβάστε την εκφώνηση προσεκτικά και σχεδιάστε το πρόγραµµά σας πριν

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

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

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2011-2012 Προθεσµία: 8/1/12, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2010 2011 Δ. Γουνόπουλος Ι. Ιωαννίδης Άσκηση 1: Συγχώνευση Εγγραφών Δυαδικών Αρχείων Προθεσμία: 2 Μαΐου 2011, 5:00μμ

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2013-2014 Προθεσµία: 7/1/2014, 22:00 Περιεχόµενα Διαβάστε πριν ξεκινήσετε Εκφώνηση άσκησης 1 Οδηγίες αποστολής άσκησης Πριν ξεκινήσετε (ΔΙΑΒΑΣΤΕ

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής Αναδροµή Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής 1 Αναδροµή Βασική έννοια στα Μαθηµατικά και στην Πληροφορική.

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

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενων από έναν

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο 2016-2017 Δέυτερη Προγραμματιστική Εργασία Προθεσμία παράδοσης: 19/6/2017 1. Γενική Περιγραφή Στην δεύτερη προγραμματιστική εργασία καλείστε να υλοποιήσετε

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 Χρησιµοποιούµε τη δοµή Κατ οίκον Εργασία 3 Σκελετοί Λύσεων typedef struct Node int data; struct node *lchild; struct node *rbro; node; και υποθέτουµε πως ένα τυχαίο δένδρο είναι υλοποιηµένο ως

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης 1. Στόχος του εργαστηρίου Στόχος του δέκατου εργαστηρίου

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

9. Κόκκινα-Μαύρα Δέντρα

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

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

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Τι θα δούμε Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί Σωροί Ουρές Fibonacci Αναπαράσταση Πράξεις Ανάλυση Συγκρίσεις Ουρές προτεραιότητας

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

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

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

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

Ενότητα 7 Ουρές Προτεραιότητας

Ενότητα 7 Ουρές Προτεραιότητας Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω

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

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

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Άσκηση 1 Έστω ότι µια βιβλιοθήκη σας παρέχει πρόσβαση σε στοίβες ακεραίων. Η βιβλιοθήκη σας επιτρέπει να ορίσετε µια στοίβα και να καλέσετε τις 5 βασικές

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 23: οµές εδοµένων και Αλγόριθµοι Ενδιάµεση Εξέταση Ηµεροµηνία : ευτέρα, 3 Νοεµβρίου 2008 ιάρκεια : 2.00-4.00 ιδάσκουσα : Άννα Φιλίππου Ονοµατεπώνυµο: ΣΚΕΛΕΤΟΙ

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

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Ασκήσεις Επανάληψης Ενδιάµεσης

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

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2016 2017 Καθηγητής Δ. Γουνόπουλος Άσκηση 2 - Εξωτερική Ταξινόμηση Παράδοση: 20/01/2017 Σκοπός της εργασίας αυτής

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/2016, 21:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016-2017 Προθεσµία: 22/12/2016, 21:00 Διαδικαστικά Η εργασία αυτή µπορεί να γίνει σε οµάδες µέχρι 2 ατόµων. Δεν είναι απαραίτητο να συνεργαστείτε

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

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

Πληροφορική 2. Δομές δεδομένων και αρχείων Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 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): επιστρέφει

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

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

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research ΑΛΓΟΡΙΘΜΟΙ ΜΕ C ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής CMOR Lab Computational Methodologies and Operations Research Δέντρα (5) Τ ένα δέντρο i ένας κόμβος στο επίπεδο k j ένας κόμβος στο επίπεδο k+1 } :

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

Santa Claus Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας

Santa Claus Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας Santa Claus Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας ΗΥ-240 Χειμερινό Εξάμηνο 2015 Διδάσκουσα: Παναγιώτα Φατούρου Παρουσίαση: Βασίλειος Θεοδοσιάδης (vtheodos@ics.forth.gr) Πέμπτη, 29 Οκτωβρίου 2015

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 3 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 3 Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου Ημερομηνία Υποβολής: 05/04/2013 Ημερομηνία

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο 2011 2012 Καθηγητές Μ. Χατζόπουλος, Δ. Γουνόπουλος Άσκηση 1 Παράδοση 4 Μαϊου Σκοπός της εργασίας αυτής είναι η κατανόηση

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2013-2014 Προθεσμία: 17/1/14, 22:00 Περιεχόμενα Διαδικαστικά Οδηγίες Αποστολής Εκφώνηση άσκησης (Στάδιο 0, Στάδιο 1, Στάδιο 2, Στάδιο 3, Στάδιο

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

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

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

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 (α) Έστω Α(n) και Κ(n) ο αριθμός των ακμών και ο αριθμός των κόμβων ενός αυστηρά δυαδικού δένδρου με n φύλλα. Θέλουμε να αποδείξουμε για κάθε n 1 την πρόταση

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

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

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

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

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

Διαχρονικές δομές δεδομένων

Διαχρονικές δομές δεδομένων Διαχρονικές δομές δεδομένων Μια τυπική δομή δεδομένων μεταβάλλεται με πράξεις εισαγωγής ή διαγραφής Π.χ. κοκκινόμαυρο δένδρο εισαγωγή 0 18 0 5 39 73 1 46 6 80 Αποκατάσταση ισορροπίας 5 39 73 0 46 6 80

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

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

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

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

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις ΗΥ2, Ενότητα : Ασκήσεις και Λύσεις Ενότητα : Κατακερματισμός Ασκήσεις και Λύσεις Άσκηση 1 Χρησιμοποιήστε τη συνάρτηση κατακερματισμού της διαίρεσης ως πρωτεύουσα συνάρτηση κατακερματισμού και τη συνάρτηση

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

My Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας

My Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας My Instagram Παρουσίαση Α Μέρους Προγραμματιστικής Εργασίας ΗΥ-240 Χειμερινό Εξάμηνο 2013 Διδάσκουσα: Παναγιώτα Φατούρου This presentation by Foivos S. Zakkak is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/10, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 22/12/10, 23:59 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010-2011 Προθεσµία: 22/12/10, 23:59 Στόχοι Λίστες Χρήση συναρτήσεων Χρήση δοµών ελέγχου Φορµαρισµένη είσοδος και έξοδος δεδοµένων Χρήση σχολίων

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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο Κατακερµατισµός 1 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινοµηµένα Αρχεία Φυσική διάταξη των εγγραφών

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010-2011 Προθεσµία: 5/12/10, 23:59 Στόχοι structs Πίνακες Συναρτήσεις Συµβολοσειρές Χρήση µεταβλητών και σταθερών Χρήση τελεστών Χρήση δοµών

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Τετάρτη 7/12/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Τετάρτη 7/12/2016, 21:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016-2017 Προθεσµία: Τετάρτη 7/12/2016, 21:00 Διαβάστε πριν ξεκινήσετε Διαβάστε όλη την εκφώνηση προσεκτικά πριν ξεκινήσετε να γράφετε κώδικα.

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

έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα

έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα ηµήτρης Φωτάκης Τµήµα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστηµάτων έντρα Αναζήτησης Πολλαπλής ιακλάδωσης ( ΑΠ ) ΑΠ ή έντρα m-δρόµων: Σ Βάσεων εδοµένων.

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

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Παπαγιαννόπουλος Δημήτριος 30 Μαρτίου 2017 18 Μαΐου 2017 papagianno@ceid.upatras.gr 1 Περιεχόμενα Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε για κάθε λειτουργία; χρόνο εκτέλεσης Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή μετά από Περιστροφές x αριστερή περιστροφή από το x y α β y

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

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 5 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ

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

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών : Δένδρα Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών : Ανάλυση αλγορίθμων (π.χ. δένδρα αναδρομής) Δομές δεδομένων (π.χ. δένδρα αναζήτησης) ακμή Κατηγορίες (αύξουσα

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

Δρομολόγηση Και Πολύχρωματισμός. Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026

Δρομολόγηση Και Πολύχρωματισμός. Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026 Δρομολόγηση Και Πολύχρωματισμός Μονοπατιών Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026 Εισαγωγή. Το πρόβλημα με το οποίο θα ασχοληθούμε εδώ είναι γνωστό σαν: Δρομολόγηση και Πολύ-χρωματισμός Διαδρομών (Routing

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

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο M. Χατζόπουλος. Προθεσμία: 19/01/2015

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο M. Χατζόπουλος. Προθεσμία: 19/01/2015 Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2013 2014 M. Χατζόπουλος Προθεσμία: 19/01/2015 Σκοπός της εργασίας είναι η κατανόηση της εσωτερικής λειτουργίας

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε για κάθε λειτουργία; χρόνο εκτέλεσης Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή μετά από Περιστροφές x αριστερή περιστροφή από το x y α β y

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

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