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

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

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

Transcript

1 ΗΥ240: Δομές Δεδομένων Χειμερινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία 2 ο Μέρος Ημερομηνία Παράδοσης: Τετάρτη, 15 Ιανουαρίου 2014, ώρα 23:59. Τρόπος Παράδοσης: Χρησιμοποιώντας το πρόγραμμα submit. Πληροφορίες για το πώς λειτουργεί το submit παρέχονται στην ιστοσελίδα του μαθήματος. Copyright for photos by Martin Doerr Γενική Περιγραφή Κατά αντιστοιχία με το 1 ο μέρος της εργασίας σας, καλείστε να υλοποιήσετε ένα πρόγραμμα που υποστηρίζει (προσομοιώνει) τη λειτουργία μίας υπηρεσίας διαμοιρασμού φωτογραφιών παρόμοιας με το Instagram. Κάθε χρήστης μπορεί να αναρτά τις φωτογραφίες που επιθυμεί ώστε να μπορούν άλλοι χρήστες να τις προβάλουν. Η υπηρεσία υποστηρίζει πολλαπλούς λογαριασμούς. Κάθε λογαριασμός ανήκει σε κάποιο χρήστη. Ο ίδιος χρήστης μπορεί να κατέχει περισσότερους του ενός λογαριασμούς. Ο χρήστης ενός λογαριασμού έχει τη δυνατότητα: να αναρτά φωτογραφίες στο λογαριασμό. να δηλώνει πως του αρέσουν (like) φωτογραφίες δικές του ή άλλων χρηστών. να επισημαίνει (tag) τον εαυτό του σε φωτογραφίες που τον απεικονίζουν ή να επισημαίνει άλλους χρήστες σε δικές του φωτογραφίες. να συνενώνει δύο λογαριασμούς που του ανήκουν. Για παράδειγμα, ας υποθέσουμε ότι ένας χρήστης έχει δύο λογαριασμούς, έναν για οικογενειακές φωτογραφίες και έναν για επαγγελματικές. Ο χρήστης έχει τη δυνατότητα να αποφασίσει ότι θέλει να έχει μόνο ένα λογαριασμό όπου θα συγκεντρώσει τις φωτογραφίες των δύο άλλων λογαριασμών του. 1

2 να διαχωρίζει το σύνολο των φωτογραφιών που περιέχονται σε κάποιο λογαριασμό του σε δύο ή περισσότερα σύνολα κάθε ένα εκ των οποίων θα ανήκει σε διαφορετικούς λογαριασμούς αυτού του χρήστη. Αναλυτική Περιγραφή Ζητούμενης Υλοποίησης Για την υλοποίηση της παραπάνω υπηρεσίας θα χρειαστείτε τις ακόλουθες κεντρικές δομές δεδομένων: 1. Έναν πίνακα κατακερματισμού, AC[], ο οποίος διατηρεί πληροφορίες για όλους τους λογαριασμούς στο σύστημα. Αυτή η δομή ονομάζεται πίνακας κατακερματισμού λογαριασμών (ahashtable_p) και παρουσιάζεται στο Σχήμα 1. Κάθε στοιχείο AC[i] του πίνακα κατακερματισμού λογαριασμών περιέχει έναν δείκτη στο πρώτο στοιχείο μιας αλυσίδας που περιέχει εκείνα τα struct account_t για τα οποία το aid τους έχει τιμή κατακερματισμού ίση με i. Άρα, ο πίνακας κατακερματισμού επιλύει συγκρούσεις με τη μέθοδο των αλυσίδων, όπου οι αλυσίδες είναι ταξινομημένες ως προς το αναγνωριστικό (aid) των λογαριασμών. Το μέγεθος του πίνακα κατακερματισμού (ahashtable_size_g) θα πρέπει να επιλέγεται από εσάς προσεχτικά και θα πρέπει να είστε σε θέση να δικαιολογήσετε την επιλογή σας. Για την υλοποίηση της συνάρτησης κατακερματισμού θα πρέπει να χρησιμοποιήσετε καθολικό κατακερματισμό. Για την υλοποίηση του καθολικού κατακερματισμού παρέχονται, ένας πίνακας primes_g[] με 160 πρώτους αριθμούς σε αύξουσα σειρά, το μέγιστο πλήθος εγγραφών, μέσο της μεταβλητής max_regs_g και το μέγιστο κλειδί, μέσο της μεταβλητής max_id_g. Οι δύο αυτές μεταβλητές είναι global και έχουν δηλωθεί στο myinstagram.h. Αρχικοποιούνται στη main βάσει τιμών που αναγράφονται στις πρώτες γραμμές του test_file. Node 5 Node 3 Node 5 aid < Node 3 aid Node 7 Node 15 Node 23 aid < Node 2 aid Node 23 Node 2 Σχήμα 1 2. Ένα ταξινομημένο, βάσει του πεδίου pid, δένδρο δυαδικής αναζήτησης με κόμβο φρουρό, το οποίο θα περιέχει όλες τις φωτογραφίες που έχουν ανεβάσει οι λογαριασμοί της υπηρεσίας. Αυτή η δομή ονομάζεται δένδρο φωτογραφιών (pbinarytree_p) και παρουσιάζεται στο Σχήμα 2. Το δένδρο αυτό είναι απλά-συνδεδεμένο (δηλαδή κάθε κόμβος του δεν αποθηκεύει δείκτη προς τον γονικό του κόμβο). Για την υλοποίηση των δομών αυτών χρειάζονται οι ακόλουθοι τύποι εγγραφών (structs): 1. Κάθε θέση του πίνακα κατακερματισμού λογαριασμών είναι ένας δείκτης σε μία αλυσίδα (account_t *). Kάθε στοιχείο της αλυσίδας αυτής είναι μία εγγραφή (ένα struct) τύπου account_t με τα ακόλουθα πεδία: aid: Αναγνωριστικό του λογαριασμού. Ένας μοναδικός αριθμός που αντιστοιχεί στο λογαριασμό. 2

3 myphotos: Δείκτης (τύπου myphoto_t *) στη ρίζα ενός διπλά-συνδεδεμένου δυαδικού δένδρου, ταξινομημένου ως προς το πεδίο pid, κάθε στοιχείο του οποίου αντιστοιχεί σε μια φωτογραφία που ανήκει στο λογαριασμό. Το δένδρο αυτό ονομάζεται δένδρο προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό aid. Κάθε στοιχείο του δένδρου προσωπικών φωτογραφιών ενός λογαριασμού είναι μία εγγραφή (ένα struct) τύπου myphoto_t με τα ακόλουθα πεδία: o o o o pid: Το αναγνωριστικό της φωτογραφίας. p: Δείκτης (τύπου myphoto_t *) στον πατέρα του κόμβου. lc: Δείκτης (τύπου myphoto_t *) στο αριστερό παιδί του κόμβου. rc: Δείκτης (τύπου myphoto_t *) στο δεξί παιδί του κόμβου. next: Δείκτης (τύπου account_t *) στον επόμενο κόμβο της αλυσίδας. Μια εγγραφή τύπου account_t παρουσιάζεται στο Σχήμα 3. Node 1 Node 2 Node 3 Node 5 Node 4 Node 6 Κόμβος φρουρός Node 5 pid < Node 2 pid < Node 4 pid < Node 1 pid < Node 6 pid < Node 3 pid Σχήμα 2 G aid myphotos Next Μία εγγραφή του δένδρου προσωπικών φωτογραφιών του λογαριασμού aid pid 6 < pid 2 < pid 1 < pid 4 < pid 3 < pid 5 pid 1 pid 2 pid 3 pid 6 pid 4 pid 5 Σχήμα 3: Εγγραφή τύπου account_t. 2. Κάθε κόμβος του δένδρου φωτογραφιών είναι μια εγγραφή (ένα struct) τύπου photo_t με τα ακόλουθα πεδία: 3

4 pid: Αναγνωριστικό της φωτογραφίας. Είναι ένας μοναδικός αριθμός που αντιστοιχεί σε κάθε φωτογραφία. aid: Αναγνωριστικό του λογαριασμού στον οποίο ανήκει η φωτογραφία. location: Αναγνωριστικό της τοποθεσίας όπου τραβήχτηκε η φωτογραφία. date: Ένας αριθμός που αντιστοιχεί στην ημερομηνία στην οποία δημιουργήθηκε η φωτογραφία. Η ημερομηνία έχει την ίδια μορφή όπως και στο πρώτο μέρος της προγραμματιστικής εργασίας. tags: Πίνακας 5 θέσεων που ονομάζεται πίνακας επισημάνσεων. Κάθε θέση του πίνακα περιέχει ένα δείκτη (τύπου account_t *) σε έναν κόμβο μιας εκ των λιστών του πίνακα κατακερματισμού λογαριασμών. Ο λογαριασμός που αντιστοιχεί σε αυτόν τον κόμβο έχει επισημανθεί (γίνει tag) σε αυτή τη φωτογραφία. likes: Δείκτης (τύπου like_t *) στη ρίζα ενός δυαδικού φυλλο-προσανατολισμένου δένδρου, ταξινομημένου ως προς το πεδίο aid. Το δένδρο αυτό ονομάζεται δένδρο οπαδών της φωτογραφίας με αναγνωριστικό pid. Κάθε στοιχείο αυτού του δένδρου είναι μία εγγραφή (ένα struct) τύπου like_t με τα ακόλουθα πεδία: o o o aid: Αναγνωριστικό λογαριασμού που έχει δηλώσει πως του αρέσει η φωτογραφία (έχει κάνει like στην φωτογραφία). lc: Δείκτης (τύπου like_t *) στο αριστερό παιδί του κόμβου. rc: Δείκτης (τύπου like_t *) στο δεξί παιδί του κόμβου. lc: Δείκτης (τύπου photo_t *) στο αριστερό παιδί του κόμβου. rc: Δείκτης (τύπου photo_t *) στο δεξί παιδί του κόμβου. Μια εγγραφή τύπου photo_t παρουσιάζεται στο Σχήμα 4. tags pid aid location date likes lc rc aid 1 lc rc aid 1 < aid 2 < aid 3 aid 1 lc rc aid 2 lc rc aid 2 lc rc aid 3 lc rc Σχήμα 4: Εγγραφή τύπου photo_t. 4

5 Δυαδικό δένδρο φωτογραφιών pbinarytree_p likes likes likes likes likes likes G Δείκτες στον κόμβο Φρουρό Δείκτες προς τους κόμβους των αλυσιδών του πίνακα κατακερματισμού Φυλλοπροσανατολισμένο Δένδρο likes Δείκτες προς φυλλοπροσανατολισμ ένο δένδρο likes Δένδρο προσωπικών φωτογραφιών myphotos Πίνακας κατακερματισμού ahashtable_p Σχήμα 5 5

6 Το Σχήμα 5 παρουσιάζει τις δομές της προγραμματιστικής εργασίας με συγκεντρωτικό τρόπο όπου, για λόγους απλότητας, στις εγγραφές (structs) τύπου photo_t δεν εμφανίζονται τα στατικά πεδία (εμφανίζονται μόνο τα πεδία που αποθηκεύουν δείκτες). Συγκεκριμένα, τα πεδία κάθε κόμβου του δένδρου φωτογραφιών που εμφανίζονται στο Σχήμα 5 είναι τα εξής: tags, likes, lc και rc με αυτή τη σειρά. Τρόπος Λειτουργίας Προγράμματος Το πρόγραμμα που θα δημιουργηθεί θα πρέπει να εκτελείται καλώντας την ακόλουθη εντολή: <executable> <hashtable-size> <input-file> όπου <executable> είναι το όνομα του εκτελέσιμου αρχείου του προγράμματος (π.χ. a.out), <hashtable-size> είναι το μέγεθος του πίνακα κατακερματισμού και <input-file> είναι το όνομα ενός αρχείου εισόδου (π.χ. testfile) που περιέχει γεγονότα των ακόλουθων μορφών: R <aid>: Γεγονός τύπου Register το οποίο σηματοδοτεί τη δημιουργία ενός νέου λογαριασμού (account_t) στο σύστημα με αναγνωριστικό <aid> και κενό δένδρο προσωπικών φωτογραφιών (myphotos). Το γεγονός αυτό πρέπει να δημιουργεί το νέο λογαριασμό και να τον προσθέτει στον πίνακα κατακερματισμού λογαριασμών. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: R <aid> DONE D <aid>: Γεγονός τύπου Delete account το οποίο σηματοδοτεί τη διαγραφή του λογαριασμού με αναγνωριστικό <aid>. Κατά τη διαγραφή ενός λογαριασμού πρέπει να διαγράφονται και όλες οι φωτογραφίες που ανήκουν στο λογαριασμό (δηλαδή όλα τα στοιχεία του δένδρου προσωπικών φωτογραφιών του λογαριασμού, καθώς και οι αντίστοιχες φωτογραφίες από το δένδρο φωτογραφιών). Επίσης, θα πρέπει να διαγραφούν όλες οι πιθανές αναφορές σε αυτόν το λογαριασμό μέσω επισημάνσεων (tags) ή/και likes. Συγκεκριμένα, θα πρέπει να εξεταστούν όλα τα στοιχεία του δένδρου φωτογραφιών και να γίνονται κατάλληλες αλλαγές στον πίνακα επισημάνσεων κάθε τέτοιου στοιχείου, αν χρειάζεται, καθώς και να εξεταστεί το δένδρο οπαδών της φωτογραφίας που αντιστοιχεί στο στοιχείο: αν το δένδρο οπαδών της φωτογραφίας αυτής περιέχει το αναγνωριστικό <aid>, το στοιχείο αυτό θα πρέπει να διαγράφεται. Τέλος θα πρέπει να αφαιρείται ο κόμβος που κρατάει τα στοιχεία για αυτόν το λογαριασμό από τον πίνακα κατακερματισμού λογαριασμών. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: D <aid> MYPHOTOS = <pid 1, pid 2,... pid n> TAGS = <tpid 1, tpid 2,... tpid k> LIKES = <lpid 1, lpid 2,... lpid m> DONE όπου n είναι το πλήθος των φωτογραφιών που ανήκουν στον λογαριασμό με αναγνωριστικό <aid>, k είναι το πλήθος των φωτογραφιών στις οποίες ο λογαριασμός είχε επισημανθεί (είχε γίνει tag), m είναι το πλήθος των φωτογραφιών των οποίων ο προς διαγραφή λογαριασμός είναι οπαδός και: για κάθε j, 1 j n, <pid j> είναι τo αναγνωριστικό της j-οστής φωτογραφίας που ανήκει στον προς διαγραφή λογαριασμό. για κάθε j, 1 j k, <tpid j> είναι τo αναγνωριστικό της j-οστής φωτογραφίας που περιείχε επισήμανση (tag) προς τον προς διαγραφή λογαριασμό. Σημειώνεται ότι από τις εγγραφές στο 6

7 δένδρο φωτογραφιών που αντιστοιχούσαν στις φωτογραφίες αυτές αφαιρέθηκαν οι εν λόγω επισημάνσεις (tags). για κάθε j, 1 j m, <lpid j> είναι το αναγνωριστικό της j-οστής φωτογραφίας που είχε οπαδό τον προς διαγραφή λογαριασμό. Σημειώνεται ότι από τις εγγραφές στο δένδρο φωτογραφιών που αντιστοιχούσαν στις φωτογραφίες αυτές αφαιρέθηκαν τα εν λόγω likes. U <pid> <aid> <location> <date>: Γεγονός τύπου Upload photo το οποίο σηματοδοτεί την ανάρτηση (upload) μίας νέας φωτογραφίας στο σύστημα. Η νέα αυτή φωτογραφία θα έχει αναγνωριστικό <pid>. Το αναγνωριστικό του λογαριασμού που έκανε την ανάρτηση θα είναι <aid>, η τοποθεσία <location>, η ημερομηνία λήψης <date>, το δένδρο οπαδών της φωτογραφίας (likes) θα είναι κενό και ο πίνακας επισημάνσεων άδειος. Η νέα φωτογραφία πρέπει να τοποθετηθεί στη σωστή θέση του δένδρου φωτογραφιών. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: U <pid> <aid> <location> <date> DONE PG = <pidg> LG = <lidg> RG = <ridg> PL = <pidl> LL = <lidl> RL = <ridl> όπου: <pidg>, <lidg> και <ridg> είναι το αναγνωριστικό της φωτογραφίας στον κόμβο πατέρα, έστω v, στον κόμβο που αντιστοιχεί στο αριστερό παιδί του v και στον κόμβο που αντιστοιχεί στο δεξιό παιδί του v, αντίστοιχα, της νέο-εισαχθείσας φωτογραφίας στο δένδρο φωτογραφιών. Είναι αξιοσημείωτο πως ένα από αυτά τα παιδιά του v θα είναι ο ίδιος ο νεο-εισαχθής κόμβος. <pidl>, <lidl> και <ridl> είναι το αναγνωριστικό της φωτογραφίας στον κόμβο πατέρα, έστω v, στον κόμβο που αντιστοιχεί στο αριστερό παιδί του v και στον κόμβο που αντιστοιχεί στο δεξιό παιδί του v, αντίστοιχα, της νέο-εισαχθείσας φωτογραφίας στο δένδρο προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid>. B <pid>: Γεγονός τύπου Burn photo το οποίο σηματοδοτεί την αφαίρεση της φωτογραφίας με αναγνωριστικό <pid> από το σύστημα. Κατά την αφαίρεση μίας φωτογραφίας από το σύστημα πρέπει να διαγράφονται και όλες οι πληροφορίες σχετικά με αυτήν και επομένως και όλα τα στοιχεία του δένδρου οπαδών της φωτογραφίας αυτής. Ακόμη θα πρέπει να διαγράφεται ο αντίστοιχος κόμβος από το δένδρο προσωπικών φωτογραφιών του λογαριασμού που ανέβασε την προς διαγραφή φωτογραφία. Επίσης, για ευκολότερη αποσφαλμάτωση του κώδικα που θα δημιουργήσετε συνίσταται ισχυρά να αναθέτετε την τιμή NULL σε κάθε στοιχείο του πίνακα επισημάνσεων της εγγραφής που αντιστοιχεί στην προς-διαγραφή φωτογραφία. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: B <pid> <aid> LIKES = <aid 1, aid 2,... aid n> PG = <pidg> LG = <lidg> RG = <ridg> PL = <pidl> LL = <lidl> RL = <ridl> DONE όπου n είναι το μέγεθος του δένδρου οπαδών της φωτογραφίας με αναγνωριστικό <pid>: <aid> είναι το αναγνωριστικό του λογαριασμού στον οποίο ανήκει η προς διαγραφή φωτογραφία, 7

8 για κάθε j, 1 j n, <aid j> είναι τo αναγνωριστικό του λογαριασμού στον οποίο δείχνει το j- οστό στοιχείο του δένδρου οπαδών της προς διαγραφή φωτογραφίας. <pidg>, <lidg> και <ridg> είναι το αναγνωριστικό της φωτογραφίας στον κόμβο πατέρα, έστω v, στον κόμβο που αντιστοιχεί στο αριστερό παιδί του v και στον κόμβο που αντιστοιχεί στο δεξιό παιδί του v, αντίστοιχα, της προς διαγραφή φωτογραφίας στο δένδρο φωτογραφιών. <pidl>, <lidl> και <ridl> είναι το αναγνωριστικό της φωτογραφίας στον κόμβο πατέρα, έστω v, στον κόμβο που αντιστοιχεί στο αριστερό παιδί του v και στον κόμβο που αντιστοιχεί στο δεξιό παιδί του v, αντίστοιχα, της προς διαγραφή φωτογραφίας στο δένδρο προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid>. L <aid> <pid>: Γεγονός τύπου Like photo το οποίο σηματοδοτεί την προσθήκη ενός κόμβου στο δένδρο οπαδών της φωτογραφίας με αναγνωριστικό <pid>. Σε αντίθεση με την πρώτο μέρος της προγραμματιστικής εργασίας, ο κόμβος αυτός αντί να αποθηκεύει έναν δείκτη προς το στοιχείο με αναγνωριστικό <aid> του πίνακα κατακερματισμού λογαριασμών, θα αποθηκεύει απλά το <aid> του λογαριασμού. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: L <aid> <pid> DONE T <aid> <pid>: Γεγονός τύπου Tag το οποίο σηματοδοτεί την προσθήκη στον πίνακα επισημάνσεων της φωτογραφίας με αναγνωριστικό <pid> ενός δείκτη στο στοιχείο του πίνακα κατακερματισμού λογαριασμών με αναγνωριστικό <aid>. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: T <aid> <pid> DONE M <aid1> <aid2> <aid3>: Γεγονός τύπου Merge accounts το οποίο σηματοδοτεί τη συνένωση των λογαριασμών με αναγνωριστικά <aid1> και <aid2> σε ένα νέο λογαριασμό με αναγνωριστικό <aid3>. Κατά τη συνένωση θα πρέπει: να συνενωθούν τα δύο δένδρα προσωπικών φωτογραφιών σε ένα νέο ταξινομημένο, διπλά συνδεδεμένο δένδρο το οποίο θα αποτελέσει το δένδρο προσωπικών φωτογραφιών για το νέο λογαριασμό να αντικατασταθούν οποιεσδήποτε αναφορές προς τους λογαριασμούς με αναγνωριστικά <aid1> και <aid2> με αναφορές στον λογαριασμό με αναγνωριστικό <aid3>. Αναφορές μπορεί να υπάρχουν στα δένδρα οπαδών και στους πίνακες επισημάνσεων των διαφόρων φωτογραφιών. Στην περίπτωση όπου και οι δύο λογαριασμοί έχουν επισημανθεί ή/και έχουν δηλώσει την αρέσκεια τους (like) για μία φωτογραφία, καλό θα ήταν να αντικαθίσταται η πρώτη αναφορά με μία αναφορά στον λογαριασμό με αναγνωριστικό <aid3> και η δεύτερη να διαγράφεται. Επομένως, αν μία φωτογραφία είχε οπαδούς και τους δύο λογαριασμούς (με αναγνωριστικά <aid1> και <aid2>), μετά το πέρας της εκτέλεσης του γεγονότος θα πρέπει να έχει ως οπαδό το λογαριασμό με αναγνωριστικό <aid3> να διαγραφούν οι λογαριασμοί με αναγνωριστικά <aid1> και <aid2> από τον πίνακα κατακερματισμού λογαριασμών Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη 8

9 πληροφορία: Μ <aid1> <aid2> <aid3> MYPHOTOS1 = <m1pid 1, m1pid 2,, m1pid m> MYPHOTOS2 = <m2pid 1, m2pid 2,, m2pid n> MYPHOTOS3 = <m3pid 1, m3pid 2,, m3pid k> UPDATED = <upid 1, upid 2, upid r> DONE όπου: m είναι το μέγεθος του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid1>, n είναι το μέγεθος του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid2>, k είναι το μέγεθος του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid3> και r είναι το πλήθος των φωτογραφιών για τις οποίες ισχύει πως κάποιο στοιχείο του πίνακα επισημάνσεων τους ή κάποιο στοιχείο του δένδρου οπαδών τους ενημερώθηκε μετά τη συνένωση και: για κάθε j, 1 j m, <m1pid j> είναι τo αναγνωριστικό του λογαριασμού στον οποίο δείχνει το j-οστό στοιχείο του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid1> (βάσει της ενδοδιατεγμένης διάσχισης), για κάθε j, 1 j n, <m2pid j> είναι τo αναγνωριστικό του λογαριασμού στον οποίο δείχνει το j-οστό στοιχείο του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid2> (βάσει της ενδοδιατεγμένης διάσχισης), για κάθε j, 1 j k, <m3pid j> είναι τo αναγνωριστικό του λογαριασμού στον οποίο δείχνει το j-οστό στοιχείο του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid3> (βάσει της ενδοδιατεγμένης διάσχισης), για κάθε j, 1 j r, <upid j> είναι τo αναγνωριστικό της φωτογραφίας της οποίας ανανεώθηκε το δένδρο οπαδών της ή/και ο πίνακας επισημάνσεων της λόγω της συνένωσης των λογαριασμών. S <aid1> <aid2> <aid3> <pid>: Γεγονός τύπου Split account το οποίο σηματοδοτεί το διαχωρισμό του λογαριασμού με αναγνωριστικό <aid1> σε δύο νέους λογαριασμούς με αναγνωριστικά <aid2> (για τον πρώτο από αυτούς) και <aid3> (για το δεύτερο). Σε αντίθεση με το πρώτο μέρος της προγραμματιστικής σας εργασίας, ο διαχωρισμός δεν γίνεται βάσει κάποιας τοποθεσίας, αλλά βάσει κάποιου αναγνωριστικού. Συγκεκριμένα, όσες φωτογραφίες έχουν μικρότερο αναγνωριστικό από το <pid> θα πρέπει να εισαχθούν (ταξινομημένες βάσει του πεδίου pid) στο δένδρο προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid2> και όλες οι υπόλοιπες στο δένδρο προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid3>. Η πολυπλοκότητα της υλοποίησης αυτής της λειτουργίας πρέπει να είναι O(h), όπου h είναι το ύψος του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid1>. Ακόμη θα πρέπει να ενημερώνεται κατάλληλα και το πεδίο <aid> των στοιχείων του δένδρου φωτογραφιών που αντιστοιχούν σε κάθε φωτογραφία που περιέχεται στα δένδρα αυτά. Τυχόν αναφορές στον λογαριασμό με αναγνωριστικό <aid1> αντικαθίστανται με αναφορές στον λογαριασμό με αναγνωριστικό <aid2>. Αναφορές μπορεί να υπάρχουν στα δένδρα οπαδών των στοιχείων του δένδρου φωτογραφιών και στους πίνακες επισημάνσεων των στοιχείων αυτών. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: 9

10 S <aid1> <aid2> <aid3> <pid> DONE MYPHOTOS1 = <m1pid 1, m1pid 2,, m1pid m> MYPHOTOS2 = <m2pid 1, m2pid 2,, m2pid n> MYPHOTOS3 = <m3pid 1, m3pid 2,, m3pid k> UPDATED = <upid 1, upid 2, upid r> όπου: m είναι το μέγεθος του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid1>, n είναι το μέγεθος του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid2>, k είναι το μέγεθος του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid3> και r είναι το πλήθος των φωτογραφιών για τις οποίες ισχύει πως κάποιο στοιχείο του πίνακα επισημάνσεων τους ή κάποιο στοιχείο του δένδρου οπαδών τους ενημερώθηκε μετά τη συνένωση και: για κάθε j, 1 j m, <m1pid j> είναι τo αναγνωριστικό του λογαριασμού στον οποίο δείχνει το j-οστό στοιχείο του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid1> (βάσει της ενδοδιατεγμένης διάσχισης), για κάθε j, 1 j n, <m2pid j> είναι τo αναγνωριστικό του λογαριασμού στον οποίο δείχνει το j-οστό στοιχείο του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid2> (βάσει της ενδοδιατεγμένης διάσχισης), για κάθε j, 1 j k, <m3pid j> είναι τo αναγνωριστικό του λογαριασμού στον οποίο δείχνει το j-οστό στοιχείο του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid3> (βάσει της ενδοδιατεγμένης διάσχισης), για κάθε j, 1 j r, > <upid j> είναι τo αναγνωριστικό της φωτογραφίας της οποίας ανανεώθηκε το δένδρο οπαδών ή/και ο πίνακας επισημάνσεων της λόγω του διαχωρισμού του λογαριασμού με αναγνωριστικό <aid1>. F <YYYYMMDD>: Γεγονός τύπου Find το οποίο σηματοδοτεί την αναζήτηση όλων των φωτογραφιών φωτογραφιών που έχουν ληφθεί την ημερομηνία <YYYYMMDD>. Μετά το πέρας του γεγονότος θα πρέπει να τυπώνεται η παρακάτω πληροφορία: F <YYYYMMDD> <pid 1> TAGS: <a1_id 1> <a1_id 2> <a1_id 3> <a1_id 4> <a1_id 5> LIKES: <l1_aid 1> <l1_aid 2> <l1_aid m1> LOCATION: <location 1> TIMESTAMP: <YYYYMMDD> <pid 2> TAGS: <a2_id 1> <a2_id 2> <a2_id 3> <a2_id 4> <a2_id 5> LIKES: <l2_aid 1> <l2_aid 2> <l2_aid m2> LOCATION: <location 2> TIMESTAMP: <YYYYMMDD> <pid n> TAGS: <an_id 1> <an_id 2> <an_id 3> <an_id 4> <an_id 5> LIKES: <ln_aid 1> <ln_aid 2> <ln_aid mn> LOCATION: <location n> TIMESTAMP: <YYYYMMDD> DONE όπου n είναι το πλήθος των φωτογραφιών που έχουν ληφθεί την ημερομηνία <YYYMMDD> και για κάθε i, 1 i n: 10

11 για κάθε j, 1 j 5, > <a<i>_id j> είναι τo αναγνωριστικό του λογαριασμού ο οποίος έχει επισημανθεί στην φωτογραφία με αναγνωριστικό <pid i> (δηλαδή υπάρχει δείκτης προς τον λογαριασμό αυτό στον πίνακα επισημάνσεων του στοιχείου που αντιστοιχεί στη φωτογραφία στο δένδρο φωτογραφιών) m i είναι το μέγεθος του δένδρου οπαδών της φωτογραφίας με αναγνωριστικό <pid i> και για κάθε j, 1 j m i, > <l<i>_aid j> είναι τo αναγνωριστικό του j-οστού στοιχείου του δένδρου οπαδών της φωτογραφίας με αναγνωριστικό <pidi> (βάσει της ενδοδιατεγμένης διάσχισης) <location i> είναι η τοποθεσία στην οποία ελήφθη η φωτογραφία με αναγνωριστικό <pid i>. 11

12 P <aid>: Γεγονός τύπου Print το οποίο σηματοδοτεί το τύπωμα των στοιχείων του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid>. Για κάθε τέτοια φωτογραφία θα πρέπει επιπρόσθετα να τυπώνονται και οι πληροφορίες που αφορούν τη φωτογραφία, όπως οι επισημάνσεις της, η τοποθεσία και η ημερομηνία που ελήφθη η φωτογραφία, καθώς και τα στοιχεία του δένδρου οπαδών της. Σε αυτό το γεγονός το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: P <aid> <pid 1> TAGS: <a1_id 1> <a1_id 2> <a1_id 3> <a1_id 4> <a1_id 5> LIKES: <l1_aid 1> <l1_aid 2> <l1_aaid m1> LOCATION: <location 1> TIMESTAMP: <YYYYMMDD 1> <pid 2> TAGS: <a2_id 1> <a2_id 2> <a2_id 3> <a2_id 4> <a2_id 5> LIKES: <l2_aid 1> <l2_aid 2> <l2_aid m2> LOCATION: <location 2> TIMESTAMP: <YYYYMMDD 2> <pid n> TAGS: <an_id 1> <an_id 2> <an_id 3> <an_id 4> <an_id 5> LIKES: <ln_aid 1> <ln_aid 2> <ln_aid mn> LOCATION: <location n> TIMESTAMP: <YYYYMMDD n> DONE όπου n είναι το πλήθος των στοιχείων στο δένδρο προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid>και για κάθε i, 1 i n: για κάθε j, 1 j 5, > <a<i>_id j> είναι τo αναγνωριστικό του λογαριασμού ο οποίος έχει επισημανθεί στην φωτογραφία με αναγνωριστικό <pid i> m i είναι το μέγεθος του δένδρου οπαδών της φωτογραφίας με αναγνωριστικό <pid i> και για κάθε j, 1 j m n, > <l<i>_aid j> είναι τo αναγνωριστικό του j-οστού στοιχείου του δένδρου οπαδών της φωτογραφίας με αναγνωριστικό <pid i> (βάσει της ενδοδιατεγμένης διάσχισης), <location i> είναι η τοποθεσία στην οποία ελήφθη η φωτογραφία με αναγνωριστικό <pid i> και <YYYYMMDD i> είναι η ημερομηνία στην οποία ελήφθη η φωτογραφία με αναγνωριστικό <pid i> (στη μορφή που περιγράφεται παραπάνω). 12

13 Α: Γεγονός τύπου Αcounts print το οποίο σηματοδοτεί το τύπωμα των στοιχείων του πίνακα κατακερματισμού λογαριασμών και του δένδρου προσωπικών φωτογραφιών που περιέχεται σε κάθε στοιχείο του. Σε αυτό το γεγονός το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: A <aid 1> MYPHOTOS: <p1_id 1> <p1_id 2>... <p1_id m1> <aid 2> MYPHOTOS: <p2_id 1> <p2_id 2>... <p2_id m2>... <aid n> MYPHOTOS: <pn_id 1> <pn_id 2>... <pn_id mn> DONE όπου n είναι το πλήθος των στοιχείων στον πίνακα κατακερματισμού λογαριασμών και για κάθε i, 1 i n: <aid i> είναι τo αναγνωριστικό του i-οστού λογαριασμού στον πίνακα κατακερματισμού λογαριασμών, m i είναι το μέγεθος του δένδρου προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid i> και για κάθε j, 1 j m i, > <p<i>_id j> είναι τo αναγνωριστικό της j- οστής φωτογραφίας στο δένδρο προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid i> (βάσει της ενδοδιατεγμένης διάσχισης). Ε: Γεγονός τύπου Εxpose photos το οποίο σηματοδοτεί το τύπωμα των στοιχείων του δένδρου φωτογραφιών. Για κάθε φωτογραφία θα πρέπει να τυπώνονται και οι πληροφορίες που αφορούν τη φωτογραφία, όπως οι επισημάνσεις της, η τοποθεσία και η ημερομηνία που ελήφθη η φωτογραφία, καθώς και τα στοιχεία του δένδρου οπαδών της. Σε αυτό το γεγονός το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: E <pid 1> TAGS: <a1_id 1> <a1_id 2> <a1_id 3> <a1_id 4> <a1_id 5> LIKES: <l1_aid 1> <l1_aid 2> <l1_aaid m1> LOCATION: <location 1> TIMESTAMP: <YYYYMMDD 1> <pid 2> TAGS: <a2_id 1> <a2_id 2> <a2_id 3> <a2_id 4> <a2_id 5> LIKES: <l2_aid 1> <l2_aid 2> <l2_aid m2> LOCATION: <location 2> TIMESTAMP: <YYYYMMDD 2> <pid n> TAGS: <an_id 1> <an_id 2> <an_id 3> <an_id 4> <an_id 5> LIKES: <ln_aid 1> <ln_aid 2> <ln_aid mn> LOCATION: <location n> TIMESTAMP: <YYYYMMDD n> DONE όπου n είναι το πλήθος των στοιχείων στο δένδρο φωτογραφιών και για κάθε i, 1 i n: για κάθε j, 1 j 5, > <a<i>_id j> είναι τo αναγνωριστικό του λογαριασμού ο οποίος έχει επισημανθεί στην φωτογραφία με αναγνωριστικό <pid i> 13

14 m i είναι το μέγεθος του δένδρου οπαδών της φωτογραφίας με αναγνωριστικό <pid i> και για κάθε j, 1 j m n, > <l<i>_aid j> είναι τo αναγνωριστικό του j-οστού στοιχείου του δένδρου οπαδών της φωτογραφίας με αναγνωριστικό <pid i> (βάσει της ενδοδιατεγμένης διάσχισης), <location i> είναι η τοποθεσία στην οποία ελήφθη η φωτογραφία με αναγνωριστικό <pid i>, <YYYYMMDD i> είναι η ημερομηνία στην οποία ελήφθη η φωτογραφία με αναγνωριστικό <pid i> (στην μορφή που περιγράφεται παραπάνω). W: Γεγονός τύπου World Print το οποίο σηματοδοτεί το τύπωμα όλων των δομών δεδομένων που υπάρχουν υπάρχουν στο σύστημα. Σε αυτό το γεγονός το πρόγραμμα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: W ACCOUNTS: <aid 1> MYPHOTOS: <p1_id 1> <p1_id 2>... <p1_id m1> <aid 2> MYPHOTOS: <p2_id 1> <p2_id 2>... <p2_id m2>... <aid n> MYPHOTOS: <pn_id 1> <pn_id 2>... <pn_id mn> PHOTOS: <pid 1> TAGS: <a1_id 1> <a1_id 2> <a1_id 3> <a1_id 4> <a1_id 5> LIKES: <l1_aid 1> <l1_aid 2>... <l1_aid k1> LOCATION: <location 1> TIMESTAMP: <YYYYMMDD 1> <pid 2> TAGS: <a2_id 1> <a2_id 2> <a2_id 3> <a2_id 4> <a2_id 5> LIKES: <l2_aid 1> <l2_aid 2>... <l2_aid k2> LOCATION: <location 2> TIMESTAMP: <YYYYMMDD 2> <pid r> TAGS: <an_id 1> <an_id 2> <an_id 3> <an_id 4> <an_id 5> LIKES: <ln_aid 1> <ln_aid 2>... <ln_aid kr> LOCATION: <location r> TIMESTAMP: <YYYYMMDD r> DONE όπου n είναι το πλήθος των στοιχείων στον πίνακα κατακερματισμού λογαριασμών και r είναι το πλήθος των στοιχείων στο δένδρο φωτογραφιών και: για κάθε i, 1 i n, > <aid i> είναι τo αναγνωριστικό του i-οστού λογαριασμού στον πίνακα κατακερματισμού λογαριασμών, m i είναι το πλήθος των στοιχείων στο δένδρο προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid i> και για κάθε j, 1 j m i, > <p<i>_id j> είναι τo αναγνωριστικό της j-οστής φωτογραφίας στο δένδρο προσωπικών φωτογραφιών του λογαριασμού με αναγνωριστικό <aid i> (βάσει της ενδοδιατεγμένης διάσχισης), για κάθε i, 1 i r, > (1) <pid i> είναι τo αναγνωριστικό της i-οστής φωτογραφίας στο δένδρο φωτογραφιών, (2) για κάθε j, 1 j 5, > <a<i>_id j> είναι τo αναγνωριστικό του λογαριασμού ο οποίος δεικτοδοτείται από τη j-οστή θέση του πίνακα επισημάνσεων της φωτογραφίας με αναγνωριστικό <pid i>, (3) m i είναι το μέγεθος του δένδρου οπαδών της φωτογραφίας με 14

15 αναγνωριστικό <pid i>, (4) για κάθε c, 1 c m i, > <l<i>_aid c> είναι τo αναγνωριστικό του λογαριασμού που είναι αποθηκευμένο στο j-οστό στοιχείο του δένδρου οπαδών της φωτογραφίας με αναγνωριστικό <pid i> (βάσει της ενδοδιατεγμένης διάσχισης), (5) <location i> είναι η τοποθεσία στην οποία ελήφθη η φωτογραφία με αναγνωριστικό <pid i> και (6) <YYYYMMDD i> είναι η ημερομηνία στην οποία ελήφθη η φωτογραφία με αναγνωριστικό <pid i> (στην μορφή που περιγράφεται παραπάνω). BONUS 1) [+30%] Υλοποιήστε τον πίνακα κατακερματισμού λογαριασμών ως ένα AVL δένδρο, το οποίο θα είναι ταξινομημένο ως προς το πεδίο aid,. Αυτή η δομή ονομάζεται AVL δένδρο λογαριασμών (aavltree_a) και παρουσιάζεται στο Σχήμα 6: Node 1 Node 2 Node 3 Node 5 Node 4 Node 6 Node 5 pid < Node 2 pid < Node 4 pid < Node 1 pid < Node 3 pid < Node 6 pid Σχημα 6 Το struct account_t παραμένει το ίδιο. Η υλοποίηση του bonus αυτού δεν απαιτεί την υλοποίηση του γεγονότος Delete Account (D) (και άρα δεν χρειάζεται να υλοποιηθούν διαγραφές στο AVL δένδρο). 2) [+20%] Υλοποιήστε τον πίνακα κατακερματισμού λογαριασμών ως έναν πίνακα ταξινομημένου (βάσει του πεδίου aid) διπλού κατακερματισμού. Ο πίνακας θα πρέπει να περιέχει τόσα στοιχεία όσοι και οι λογαριασμοί στο σύστημα. Αυτή η δομή ονομάζεται πίνακας διπλού κατακερματισμού λογαριασμών (adoublehashtable_p) και παρουσιάζεται στο Σχήμα 7. Στην υλοποίηση αυτής της δομής καλείστε να υλοποιήσετε και να χρησιμοποιήσετε καθολικό κατακερματισμό (και για τις δύο συναρτήσεις κατακερματισμού). Προσοχή στην υλοποίηση της διαγραφής στον ταξινομημένο πίνακα κατακερματισμού (η οποία χρειάζεται για την υλοποίηση του γεγονότος D). 0 K2 H(K2, 0) K3 H(K1,0), H(K3,0), H(K5,0) K4 H(K4,0) K1 Η(K1,1) Η(K5,1) K1 > K3 m-1 K5 Σχήμα 7 Η(K5,2) K1 < K5 && K3 < K5 3) [+10%] Την λειτουργία επέκτασης του πίνακα κατακερματισμού λογαριασμών. Το μέγεθος του πίνακα κατακερματισμού θα πρέπει να αυξάνει ή να μειώνεται κατά τη διάρκεια εκτέλεσης του προγράμματος 15

16 ανάλογα με το πλήθος των κόμβων που υπάρχουν σε αυτόν. Η αύξηση του μεγέθους του πίνακα θα γίνεται ως εξής. Στο myinstagram.h θα υπάρχει ένας πίνακας primes_g[] από πρώτους αριθμούς, τα στοιχεία του οποίου θα έχουν αρχικοποιηθεί από τη main. Την i-οστή φορά που πρέπει να αυξηθεί το μέγεθος του πίνακα κατακερματισμού, θα πρέπει, μετά την αύξηση, αυτός να έχει μέγεθος όσο ο πρώτος που είναι αποθηκεύμενος στο στοιχείο primes_g[i]. Στο παρακάτω σχήμα (Σχημα 9) φαίνεται πως θα γίνεται η διαδικασία αυτή. Node 5 Node 3 Node 8 Node 5 Node 31 Node 32 Node 7 Node 831 Node 7 Node 8 Node 29 Node 15 Node 29 Node 15 Node 23 Node 23 Node 2 Node 8 Node 29 Node 8 Node 31 Node 8 Node 2 Node 3 Node 3 Σχήμα 9 Όταν το πλήθος των κόμβων κάποιας λίστας γίνει ίσο με ένα πάνω φράγμα ht_lower_g, τότε το μέγεθος του πίνακα κατακερματισμού πρέπει να αυξηθεί (με τη διαδικασία που περιεγράφηκε παραπάνω) και να υπολογιστεί ξανά η θέση του κάθε κλειδιού χρησιμοποιώντας τη συνάρτηση κατακερματισμού. Αν το πλήθος των κόμβων σε κάθε λίστα γίνει μικρότερο από κάποιο κάτω φράγμα, ht_lower_g, θα πρέπει το μέγεθος του πίνακα κατακερματισμού να μειώνεται ακολουθώντας την αντίστροφη διαδικασία. Συγκεκριμένα, αν το τρέχον μέγεθος του πίνακα είναι ίσο με primes_g[i], μετά τη μείωση, το μέγεθος θα πρέπει να είναι ίσο με primes_g[i-1]. Οι μεταβλητές ht_upper_g και ht_lower_g είναι global και έχουν δηλωθεί στο myinstagram.h. Αρχικοποιούνται στη main βάσει τιμών που αναγράφονται στις πρώτες γραμμές του test_file. ΠΡΟΣΟΧΗ Κάθε υλοποίηση κάποιου bonus πρέπει να γίνει σε διαφορετικό αρχείο/α και ΟΧΙ στο βασικό/ά αρχείο/ά του project σας και θα πρέπει να κάνετε submit το βασικό project και όσα αρχεία αντιστοιχούν σε κάθε ένα από τα bonus που θα υλοποιήσετε. 16

17 Δομές Δεδομένων Στη συνέχεια παρουσιάζονται οι δομές σε C που πρέπει να χρησιμοποιηθούν για την υλοποίηση της παρούσας εργασίας. //////////////////////////////////////////////////////////////////////////////// // Defining the needed structures //////////////////////////////////////////////////////////////////////////////// /** Enum and array doing the location to integer mapping */ typedef enum { attica = 1, central_greece = 2, central_macedonia = 3, crete = 4, east_macedonia_and_thrace = 5, epirus = 6, ionian_islands = 7, north_aegean = 8, peloponnese = 9, south_aegean = 10, thessaly = 11, west_greece = 12, west_macedonia = 13 } location_e; /* This array is defined in main.c */ extern char* locations_g[14]; /** * Structure defining a node of the myphotos double linked binary tree * (dendro prosopikwn fwtografiwn) */ typedef struct myphoto { unsigned int pid; /**< The photo identifier. >0 */ struct myphoto *p; /**< Pointer to the node's parent */ struct myphoto *lc; /**< Pointer to the node's left child */ struct myphoto *rc; /**< Pointer to the node's right child */ } myphoto_t; /** * Structure defining a node of the accounts' hashtable (pinakas * katakermatismou logariasmwn) */ typedef struct account { unsigned int aid; /**< The account's identifier */ myphoto_t *myphotos;/**< A binary tree with the photos * uploaded by this account */ struct account *next; /**< Pointer to the next node of the * chain */ } account_t; /** 17

18 * Structure defining a node of the likes tree (dendro opadwn) */ typedef struct like { unsigned int aid; /**< The account's identifier that liked * the photo. >0 */ struct like *lc; /**< Pointer to the left child */ struct like *rc; /**< Pointer to the right child */ } like_t; /** * Structure defining a node of the photos binary search tree (dendro * fwtografiwn) */ typedef struct photo { unsigned int pid; /**< The photo identifier. >0 */ unsigned int aid; /**< The uploader's account identifier */ location_e location; /**< The location where this photo * was captured */ unsigned int date; /**< The date the photo was * captured. (YYYYMMDD) */ account_t *tags[max_tags];/**< An array with pointers to the * tagged accounts in this * photo */ like_t *likes; /**< A tree with the accounts that * like the photo */ struct photo *lc; /**< Pointer to the left child of * the photos tree */ struct photo *rc; /**< Pointer to the previous node * of the photos tree */ } photo_t; // For simplicity we define the two major data structures as global variables extern account_t** ahashtable_p; /**< The accounts hashtable * (pinakas katakermatismou * logariasmwn). This is an * array of lists (chains) */ extern int ahashtable_size_g; /**< The size of the accounts * hashtable, parsed from the * command line (>0) */ extern unsigned int max_regs_g; /**< The maximum number of * registrations (accounts) */ extern unsigned int max_id_g; /**< The maximum account ID */ extern photo_t* pbinarytree_p; /**< The photos binary search * tree (dendro fwtografiwn) */ //////////////////////////////////////////////////////////////////////////////// Συμβουλές Για λόγους ευκολότερης αποσφαλμάτωσης του κώδικα που θα δημιουργήσετε, συνίσταται ισχυρά κατά την διαγραφή κόμβων να αναθέτετε την τιμή NULL στους δείκτες του προς διαγραφή στοιχείου. Ακόμη συνίσταται να αναθέτεται την τιμή 0 στα υπόλοιπα πεδία που είναι τύπου (unsigned int). 18

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΝΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΣ ΔΔΟΜΝΩΝ ΚΙ ΛΓΟΡΙΘΜΟΙ ΗΜΡΟΜΗΝΙ: 14/11/2018 ΔΙΓΝΩΣΤΙΚΟ ΠΝΩ Σ ΔΝΔΡΙΚΣ ΔΟΜΣ ΚΙ ΓΡΦΟΥΣ Διάρκεια: 45 λεπτά Ονοματεπώνυμο:. ρ. Ταυτότητας:. ΒΘΜΟΛΟΓΙ ΣΚΗΣΗ ΒΘΜΟΣ

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

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

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

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

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

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

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 8 Ξένα Σύνολα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΗΥ360 Αρχεία και Βάσεις εδοµένων

ΗΥ360 Αρχεία και Βάσεις εδοµένων ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης Tutorial B-Trees, B+Trees Μπαριτάκης Παύλος 2018-2019 Ιδιότητες B-trees Χρήση για μείωση των προσπελάσεων στον δίσκο Επέκταση των Binary Search Trees

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

Διδάσκων: Κωνσταντίνος Κώστα

Διδάσκων: Κωνσταντίνος Κώστα Διάλεξη Ε7: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Hashing, Final Exam Διδάσκων: Κωνσταντίνος Κώστα ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Ε7-1

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

Διδάσκων: Κωνσταντίνος Κώστα

Διδάσκων: Κωνσταντίνος Κώστα Διάλεξη Ε4: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Δυαδικά Δένδρα Αναζήτησης Ισοζυγισμένα Δένδρα & 2-3 Δένδρα Διδάσκων: Κωνσταντίνος

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

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

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

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

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

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

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

Προγραμματισμός Δομές Δεδομένων

Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που

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

AVL-trees C++ implementation

AVL-trees C++ implementation Τ Μ Η Μ Α Μ Η Χ Α Ν Ι Κ Ω Ν Η / Υ Κ Α Ι Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ AVL-trees C++ implementation Δομές Δεδομένων Μάριος Κενδέα 31 Μαρτίου 2015 kendea@ceid.upatras.gr Εισαγωγή (1/3) Δυαδικά Δένδρα Αναζήτησης:

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

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

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

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

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v.

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v. ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 ένδρα Κόµβοι (nodes) Ακµές (edges) Ουρά και κεφαλή ακµής (tail, head) Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) Μονοπάτι (path) Πρόγονος απόγονος

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 2 Σύνολα (Sets) Τα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 7 Ουρές Προτεραιότητας ΗΥ240 - Παναγιώτα Φατούρου 2 Ουρές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ισοζυγισμένα Δέντρα Υλοποίηση AVL δέντρων Εισαγωγή Κόμβων και Περιστροφές σε AVL δέντρα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1

Διασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι

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

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

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

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

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

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

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

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

Εργασία 3 Σκελετοί Λύσεων Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 Χρησιμοποιούμε τη δομή typedef struct TNode{ int key; struct TNode *left; struct TNode *right; tnode; και υποθέτουμε πως ένα δυαδικό δένδρο είναι υλοποιημένο ως δείκτης

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

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 5 Ανάπτυξη Προγράμματος Συμπίεσης/Αποσυμπίεσης Αρχείων

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

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

Εργαστήριο 2 Δυναμικές Δομές Δεδομένων Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Εργαστήριο 2 Δυναμικές Δομές Δεδομένων Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 2 Δυναμικές Δομές Δεδομένων Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2015-1016 Δομές Δεδομένων Μια δομή δεδομένων είναι μια συλλογή δεδομένων με κάποιες ιδιότητες

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 23: Ισοζυγισμένα Δέντρα, AVL Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ισοζυγισμένα Δέντρα - Υλοποίηση AVL-δέντρων - Εισαγωγή Κόμβων και Περιστροφές σε AVL δέντρα Διδάσκων:

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

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

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

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

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

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

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

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Δυαδικά Δέντρα Προγραμματισμός II 1 lalis@inf.uth.gr Δέντρα Τα δέντρα είναι κλασικές αναδρομικές δομές Ένα δέντρο αποτελείται από υποδέντρα, καθένα από τα οποία μπορεί να θεωρηθεί

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Δέντρα Αναζήτησης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Αναζήτηση Θέλουμε να διατηρήσουμε αντικείμενα με κλειδιά και να μπορούμε εκτός από

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας

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

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

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

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

Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα

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

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

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά EPL231: Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά Αναδρομή Η αναδρομή εμφανίζεται όταν μία διεργασία καλεί τον εαυτό της Υπάρχουν

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

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Απλές Λίστες CS100, 2015-2016 1 / 10 Δομές δεδομένων Ορισμός:

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

Slide 6 / 43. Slide 5 / 43. Α. Σαββίδης. Α. Σαββίδης. Slide 8 / 43. Slide 7 / 43. Α. Σαββίδης. Α. Σαββίδης HY340, 2009 HY340, 2009 HY340, 2009

Slide 6 / 43. Slide 5 / 43. Α. Σαββίδης. Α. Σαββίδης. Slide 8 / 43. Slide 7 / 43. Α. Σαββίδης. Α. Σαββίδης HY340, 2009 HY340, 2009 HY340, 2009 HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 3 ο Symbol Table ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης Slide

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

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες Δομές δεδομένων Πίνακες Οι πίνακες είναι το πιο απλό «μέσο» αποθήκευσης ομοειδούς πληροφορίας. Χρησιμοποιούν ακριβώς όση μνήμη χρειάζεται για την αποθήκευση της πληροφορίας Επιτρέπουν την προσπέλαση άμεσα

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

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

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

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

Μάθημα 22: Δυαδικά δέντρα (Binary Trees)

Μάθημα 22: Δυαδικά δέντρα (Binary Trees) Trees Page 1 Μάθημα 22: Δυαδικά δέντρα (Binary Trees) Ένα δένδρο είναι δυαδικό αν όλοι οι κόμβοι του έχουν βαθμό (degree)

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