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

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

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

Transcript

1 ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 2 ο Μέρος Ηµεροµηνία Παράδοσης: Κυριακή, 18 Μαΐου 2015, ώρα 23:59. Τρόπος Παράδοσης: Χρησιµοποιώντας το πρόγραµµα turnin. Πληροφορίες για το πώς λειτουργεί το turnin παρέχονται στην ιστοσελίδα του µαθήµατος. Γενική Περιγραφή Στην εργασία αυτή καλείστε να υλοποιήσετε ένα πρόγραµµα που προσοµοιώνει το εκλογικό σύστηµα της Ελλάδας. Το ελληνικό εκλογικό σύστηµα είναι το σύστηµα µε το οποίο κατανέµονται οι βουλευτικές έδρες στα κόµµατα µε βάση τις ψήφους που έλαβαν στις βουλευτικές εκλογές. Ρυθµίζεται από ειδικό νόµο, που ονοµάζεται εκλογικός νόµος. Σηµείωση: Προκειµένου να πραγµατωθούν οι εκπαιδευτικοί στόχοι της εργασίας, δεν ακολουθείται πιστά ο εκλογικός νόµος και έχουν γίνει σηµαντικές απλοποιήσεις σχετικά µε τον τρόπο µε τον οποίο κατανέµονται οι έδρες. Συνεπώς, όσα αναγράφονται στην παρούσα εκφώνηση δεν αντιστοιχούν µε ακρίβεια στην ισχύουσα εκλογική νοµοθεσία. 1

2 Αναλυτική Περιγραφή Ζητούµενης Υλοποίησης Για την υλοποίηση της προσοµοίωσης του ελληνικού εκλογικού συστήµατος, θα πρέπει να χρησιµοποιήσετε έναν πίνακα σταθερού µεγέθους 56 θέσεων, ο οποίος ονοµάζεται πίνακας εκλογικών περιφερειών (Districts) (εικόνα 1). Κάθε στοιχείο του πίνακα περιφερειών είναι µια εγγραφή τύπου district µε τα ακόλουθα πεδία: did: Αναγνωριστικό (τύπου int) που χαρακτηρίζει µοναδικά την εκλογική περιφέρεια. seats: Ο αριθµός (τύπου int) των βουλευτικών εδρών που αντιστοιχούν στην περιφέρεια. blanks: Ο αριθµός (τύπου int) των άκυρων ψήφων που µετρήθηκαν κατά την καταµέτρηση ψήφων σε όλα τα εκλογικά τµήµατα της εκλογικής περιφέρειας. voids: Ο αριθµός (τύπου int) των λευκών ψήφων που µετρήθηκαν κατά την καταµέτρηση ψήφων σε όλα τα εκλογικά τµήµατα της εκλογικής περιφέρειας. party_votes: Ενας πίνακας µε µέγεθος ίσο µε τον αριθµό των κοµµάτων που συµµετέχουν στις εκλογές (δηλαδή σ αυτήν την εργασία, το µέγεθος αυτού του πίνακα είναι 5). Το αναγνωριστικό ενός κόµµατος (pid) µπορεί να χρησιµοποιείται ως δείκτης στον πίνακα. Το στοιχείο party_votes[j], όπου 0 j 4, αποθηκεύεται ο αριθµός των ψήφων που έχει λάβει το κόµµα µε αναγνωριστικό j στην εκλογική περιφέρεια µε αναγνωριστικό did. Για την αποθήκευση των εκλογικών τµηµάτων όλων των περιφερειών θα πρέπει να υλοποιήσετε έναν πίνακα κατακερµατισµού Stations[], ο οποίος θα ονοµάζεται πίνακας κατακερµατισµού εκλογικών τµηµάτων. Το µέγεθος του πίνακα κατακερµατισµού (ahashtable_size_g) θα πρέπει να επιλέγεται από εσάς προσεχτικά και θα πρέπει να είστε σε θέση να δικαιολογήσετε την επιλογή σας. Εποµένως, στη δεύτερη φάση της προγραµµατιστικής εργασίας, δεν υπάρχει πλέον µια λίστα εκλογικών τµηµάτων ανά περιφέρεια, αλλά µια συγκεντρωτική δοµή, που είναι ένας πίνακας κατακερµατισµού και αποθηκεύει πληροφορίες για όλα τα εκλοφικά τµήµατα ανεξάρτητα από την εκλογική περιφέρεια στην οποία αυτά ανήκουν. Για την υλοποίηση της συνάρτησης κατακερµατισµού θα πρέπει να χρησιµοποιήσετε καθολικό κατακερµατισµό. Για την υλοποίηση του καθολικού κατακερµατισµού θα δίνονται τα εξής: (1) ένας πίνακας primes_g[], ο οποίος θα περιέχει έναν αριθµό από πρώτους αριθµούς σε αύξουσα σειρά, το µέγιστο πλήθος των εκλογικών τµηµάτων, µέσω της µεταβλητής max_stations_g και το µέγιστο αναγνωριστικό του εκλογικού τµήµατος (sid), µέσω της µεταβλητής max_sid_g. Αυτές οι µεταβλητές θα είναι global, θα έχουν δηλωθεί στο voting.h και θα αρχικοποιούνται στη main βάσει τιµών που αναγράφονται στις πρώτες γραµµές κάθε test_file. Για την επίλυση των συγκρούσεων θα πρέπει να ακολουθήσετε τη µέθοδο των ταξινοµηµένων αλυσίδων. Εποµένως, στο στοιχείο Stations[j], όπου 0 j < ahashtable_size_g, αποθηκεύεται ένας δείκτης (τύπου station *) προς το πρώτο στοιχείο µιας αλυσίδας. Κάθε στοιχείο της αλυσίδας αυτής περιέχει πληροφορίες για κάποιο εκλογικό τµήµα (για το οποίο η τιµή κατακερµατισµού του αναγνωριτικού του είναι j). Ο πίνακας κατακερµατισµού εκλογικών τµηµάτων παρουσιάζεται στο Σχήµα 2. Κάθε εγγραφή τύπου station αποτελείται από τα παρακάτω πεδία : sid: Αναγνωριστικό (τύπου int) που χαρακτηρίζει µοναδικά το εκλογικό τµήµα. did: Το αναγνωριστικό (τυπου int) της εκλογικής περιφέρειας στην οποία ανήκει το εκλογικό τµήµα. registered: Ο αριθµός (τύπου int) των ψηφοφόρων που είναι εγγεγραµµένοι στο εκλογικό τµήµα. voters: Δείκτης (τύπου voter *) στη ρίζα ενός πλήρους, µη-ταξινοµηµένου, διπλάσυνδεδεµένου δυαδικού δένδρου. Το δέντρο αυτό ονοµάζεται δένδρο ψηφοφόρων του εκλογικού τµήµατος µε αναγνωριστικό sid και παρουσιάζεται στο Σχήµα 3. Κάθε στοιχείο του δέντρου ψηφοφόρων του εκλογικού τµήµατος µε αναγνωριστικό sid, αντιστοιχεί σε έναν ψηφοφόρο που είναι εγγεγραµµένος στο εκλογικό τµήµα και αποτελεί µια εγγραφή τύπου voter µε τα ακόλουθα πεδία: 2

3 vid: Αναγνωριστικό (τύπου int) που χαρακτηρίζει µοναδικά τον ψηφοφόρο. voted: Μεταβλητή (τύπου int) που δηλώνει αν ο ψηφοφόρος έχει εξασκήσει το δικαίωµα ψήφου. parent: Δείκτης (τύπου voter *) στον πατρικό κόµβο lc: Δείκτης (τύπου voter *) στο αριστερό παιδί του κόµβου rc: Δείκτης (τύπου voter *) στο δεξί παιδί του κόµβου next: Δείκτης (τύπου station) στον επόµενο κόµβο της αλυσίδας στην οποία ανήκει η εγγραφή που αντιστοιχεί στο εκλογικό τµήµα µε αναγνωριστικό sid. Πληροφορίες για τους υποψήφιους των κοµµάτων σε ολόκληρη την επικράτεια θα αποθηκεύεται σε ένα απλά-συνδεδεµένο δυαδικό δένδρο αναζήτησης (binary search tree) µε κόµβο φρουρό. Το δέντρο αυτό είναι ταξινοµηµένο ως προς το αναγνωριστικό του κάθε υποψηφίου. Το δέντρο αυτό ονοµάζεται δέντρο υποψηφιών και παρουσιάζεται στο Σχήµα 4. Εποµένως, στη δεύτερη φάση της προγραµµατιστικής εργασίας, δεν υπάρχει πλέον η λίστα υποψηφίων ανά περιφέρεια, αλλά µια συγκεντρωτική δενδρική δοµή που αποθηκεύει πληροφορίες για όλους τους υποψήφιους των κοµµάτων, ανεξάρτητα από την περιφέρεια στην οποία ο κάθε υποψήφιος ανήκει. Κάθε κόµβος του δέντρου υποψηφίων είναι µια εγγραφή τύπου candidate µε τα ακόλουθα πεδία : cid: Αναγνωριστικό (τύπου int) που χαρακτηρίζει τον υποψήφιο. pid: Αναγνωριστικό (τύπου int) που αντιστοιχεί στο κόµµα το οποίο ο υποψήφιος εκπροσωπεί. did: Το αναγνωριστικό της εκλογικής περιφέρειας στην οποία ο υποψήφιος εκλέγεται votes: Ο αριθµός (τύπου int) των ψήφων που συγκέντρωσε ο υποψήφιος απ όλα τα εκλογικά τµήµατα της εκλογικής περιφέρειας µε αναγνωριστικό did στην οποία είναι υποψήφιος. elected: Μεταβλητή (τύπου int) που δηλώνει αν ο υποψήφιος εκλέγεται. Η µεταβλητή αυτή αποθηκεύει µόνο τις τιµές 0 (FALSE) και 1 (TRUE). lc: Δείκτης (τύπου candidate *) στο αριστερό παιδί του κόµβου rc: Δείκτης (τύπου candidate *) στο δεξί παιδί του κόµβου Στη δεύτερη φάση της προγραµµατιστικής εργασίας, θα κάνουµε τη θεώρηση ότι το κάθε κόµµα µπορεί να έχει το πολύ 200 υποψήφιους (σε ολόκληρη την επικράτεια). Συνεπώς, µπορούµε να δεσµεύσουµε ένα εύρος 100 ανγνωριστικών για τους υποψηφίους κάθε κόµµατος. Για παράδειγµα, όλοι οι υποψήφιοι του πρώτου κόµµατος θα έχουν αναγνωριστικά στο διάστηµα 1-199, του δεύτερου κόµµατος στο διάστηµα , κ.ο.κ. Για τις ανάγκες της εργασίας αυτής, θεωρούµε ότι υπάρχουν πέντε διαφορετικά κόµµατα που συµµετέχουν στις εκλογές. Θα πρέπει να χρησιµοποιήσετε έναν πίνακα σταθερού µεγέθους 5 θέσεων, ο οποίος ονοµάζεται πίνακας κοµµάτων (Parties). Το κάθε στοιχείο του πίνακα κοµµάτων είναι µια εγγραφή τύπου party µε τα ακόλουθα πεδία: pid: Αναγνωριστικό (τύπου int) που χαρακτηρίζει το κόµµα. nelected: Ο αριθµός (τύπου int) των βουλευτών που εκλέγει το κόµµα. party_candidates: Δείκτης (τύπου candidate *) στη ρίζα ενός απλά-συνδεδεµένου δένδρου δυασικής αναζήτησης (binary search tree), το οποίο είναι ταξινοµηµένο µε βάση το αναγνωριστικό του υποψηφίου (cid). Κάθε στοιχείο του δέντρου, αποτελεί µια εγγραφή τύπου candidate και αντιστοιχεί σε έναν υποψήφιο του κόµµατος µε αναγνωριστικό pid. Τέλος, θα πρέπει να υλοποιήσετε τη δοµή του κοινοβουλίου (Parliament), η οποία είναι µια ταξινοµηµένη, απλά συνδεδεµένη λίστα. Η λίστα αυτή ονοµάζεται λίστα βουλευτών και είναι ταξινοµηµένη σε φθίνουσα διάταξη ως προς το αναγνωριστικό των βουλευτών (cid). Κάθε κόµβος αυτής της λίστας αποτελεί µια εγγραφή τύπου candidate_l µε πεδία: cid: Αναγνωριστικό (τύπου int) που χαρακτηρίζει τον υποψήφιο που έχει εκλεγεί βουλευτής. 3

4 pid: Αναγνωριστικό (τύπου int) που αντιστοιχεί στο κόµµα το οποίο ο βουλευτής εκπροσωπεί. did: Το αναγνωριστικό της εκλογικής περιφέρειας στην οποία ο βουλευτής εκλέγεται next: Δείκτης στον επόµενο κόµβο της λίστας. Κάθε στοιχείο του πίνακα Districts αρχικοποιείται έτσι ώστε το πεδίο did του να είναι ίσο µε την τιµή -1. Κάθε φορά που εισάγετε ένα νέο στοιχείο στον πίνακα, αυτό πρέπει να τοποθετείται στο πρώτο στοιχείο του πίνακα του οποίου το πεδίο did είναι ίσο µε την τιµή -1. Η εύρεση του αυτού του στοιχείου θα πρέπει να πραγµατοποιείται σε χρόνο Ο(log n), όπου n είναι το πλήθος των κατειληµµένων θέσεων του πίνακα πάνω στον οποίο εφαρµόζεται ο αλγόριθµος. Τα έγκυρα στοιχεία του πίνακα, δηλαδή εκείνα µε αναγνωριστικό διαφορετικό από -1 θα πρέπει να βρίσκονται σε συνεχόµενες θέσεις του πίνακα, ξεινώντας από τη θέση 0. Παρακάτω παρουσιάζονται οι δοµές δεδοµένων σε σχηµατική µορφή. Figure 1 πίνακας εκλογικών περιφερειών (Districts) 4

5 Figure 2 Πίνακας κατακερµατισµού εκλογικών τµηµάτων (stations). Figure 3 Δέντρο ψηφοφόρων (πλήρες, µη-ταξινοµηµένο, διπλά-συνδεδεµένο δυαδικό δέντρο). 5

6 Figure 4 Δέντρο υποψηφίων (απλά-συνδεδεµένο δυαδικό δέντρο αναζήτησης µε κόµβο φρουρό, ταξινοµηµένο ως προς το αναγνωριστικό του κάθε υποψηφίου). 6

7 Figure 5 (α) Πίνακας κοµµάτων (Parties) (β) Κοινοβούλιο (Parliament) (ταξινοµηµένη, απλά συνδεδεµένη λίστα) 7

8 Τρόπος Λειτουργίας Προγράµµατος Το πρόγραµµα που θα δηµιουργηθεί θα πρέπει να εκτελείται καλώντας την ακόλουθη εντολή: <executable> <input-file> όπου <executable> είναι το όνοµα του εκτελέσιµου αρχείου του προγράµµατος (π.χ. a.out) και <input-file> είναι το όνοµα ενός αρχείου εισόδου (π.χ. testfile) το οποίο περιέχει γεγονότα των ακόλουθων µορφών: A Γεγονός τύπου announce elections το οποίο υποδηλώνει την αναγγελία των εκλογών. Κατά το γεγονός αυτό αρχικοποιείται η δοµή του πίνακα εκλογικών περιφερειών (Districts). Συγκεκριµένα, το κάθε πεδίο του κάθε στοιχείου του πίνακα που είναι τύπου int αρχικοποιείται µε την τιµή -1.Με τον ίδιο τρόπο αρχικοποιούνται ο πίνακας κατακερµατιστµού εκλογικών τµηµάτων, ο πίνακας κοµµάτων (Parties) και η δοµή του κοινοβουλίου (Parliament), όπου κάθε πεδίο που είναι δείκτης αρχικοποιείται µε την τιµή NULL. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: A D <did> <seats> Γεγονός τύπου create district το οποίο σηµατοδοτεί τη δηµιουργία µιας νέας εκλογικής περιφέρειας (district) µε αναγνωριστικό <did> και αριθµό εκλεγόµενων εδρών <seats>. Η νέα εκλογική περιφέρεια εισάγεται στον πίνακα εκλογικών περιφερειών. Χρησιµοποιήστε κατάλληλες µεταβλητές ώστε η χρονική πολυπλοκότητα της εισαγωγής να είναι Ο(log n), όπου n είναι το πλήθος των κατειληµµένων (µε έγκυρα στοιχεία) θέσεων του πίνακα. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: D <did> <seats> Districts = <did 1 >, <did 2 >,..., <did n > όπου n είναι ο αριθµός των εκλογικών περιφερειών που έχουν δηµιουργηθεί µέχι τώρα και για κάθε i {1,..., n}, <did i > είναι το αναγνωριστικό της i-οστής εκλογικής περιφέρειας. S <sid> <did> Γεγονός τύπου create station το οποίο σηµατοδοτεί τη δηµιουργία ενός νέου εκλογικού τµήµατος µε αναγνωριστικό <sid> στην εκλογική περιφέρεια µε αναγνωριστικό <did>. Στην εγγραφή τύπου station που αντιστοιχεί στο νέο εκλογικό τµήµα, ο αριθµός των εγγεγραµµένων ψηφοφόρων (πεδίο registered), αρχικοποιείται µε την τιµή 0, ενώ το δέντρο ψηφοφόρων (voters) είναι κενό. Η εισαγωγή του εκλογικού τµήµατος γίνεται στην κατάλληλη αλυσίδα του πίνακα κατακερµατισµού, βάσει της τιµής κατακερµατισµού του αναγνωριστικού του. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: 8

9 S <sid> <did> Stations[m] = <sid 1 >, <sid 2 >,..., <sid n > όπου m είναι η τιµή κατακερµατισµού του <sid>, n είναι ο αριθµός των εκλογικών τµηµάτων της συγκεκριµένης αλυσίδας και για κάθε i {1,, n}, <sid i > είναι το αναγνωριστικό του i-οστού εκλογικού τµήµατος στην αλυσίδα αυτή. P <pid> Γεγονός τύπου create party το οποίο σηµατοδοτεί την ίδρυση ενός νέου κόµµατος (party) µε αναγνωριστικό <pid>. Το νέο κόµµα εισάγεται στον πίνακα κοµµάτων. Το νέο κόµµα περιέχει κενό δέντρο υποψηφίων µελών του κόµµατος (party_candidates) και τιµή του πεδίου nelected ίση µε 0. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: P <pid> Parties = <pid 1 >, <pid 2 >,..., <pid n > όπου n είναι το ο αριθµός των ιδρυθέντων κοµµάτων και για κάθε i {1,, n}, <pid i > είναι το αναγνωριστικό του i-οστού ιδρυθέντος κόµµατος. C <cid> <did> <pid> Γεγονός τύπου register candidate το οποίο σηµατοδοτεί την εγγραφή ενός νέου υποψηφίου (candidate) µε αναγνωριστικό <cid> του κόµµατος µε αναγνωριστικό <pid> στην εκλογική περιφέρεια µε αναγνωριστικό <did>. Το γεγονός αυτό προσθέτει το νέο υποψήφιο στο δέντρο υποψηφιών της επικράτειας. Το πεδίο votes αρχικοποιείται µε την τιµή 0 και το πεδίο elected µε την τιµή FALSE. Η πληροφορία ότι ο υποψήφιος ανήκει στο συγκεκριµένο κόµµα, δεν αποθηκεύεται στην παρούσα φάση στον πίνακα Parties (αποθηκεύεται απλά στο πεδίο pid της δοµής του υποψηφίου). Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: C <cid> <did> <pid> <cid 1 > : <pid 1 > <did 1 > <cid 2 > : <pid 2 > <did 2 >... <cid n > : <pid n > <did n > όπου n είναι το πλήθος των υποψηφίων στο δέντρο υποψηφίων της επικράτειας και για κάθε i {1,, n}: <cid i > είναι το αναγνωριστικό του i-οστού υποψηφίου στο δέντρο υποψηφίων της επικράτειας 9

10 <pid i > είναι το αναγνωριστικό του κόµµατος στο οποίο ανήκει ο υποψήφιος µε αναγνωριστικό <cid i > <did i > είναι το αναγνωριστικό της περιφέρειας στην οποία εκλέγεται ο υποψήφιος µε αναγνωριστικό <cid i > Προσοχή: Για την εκτύπωση των αναγνωριστικών των υποψηφίων πρέπει να εφαρµόζεται ενδοδιατεταγµένη διάσχιση στο δέντρο υποψηφίων της επικράτειας. R <vid> <sid> Γεγονός τύπου register voter το οποίο σηµατοδοτεί την εγγραφή ενός νέου ψηφοφόρου (voter) µε αναγνωριστικό <vid> ο οποίος είναι εγγεγραµµένος στο εκλογικό τµήµα µε αναγνωριστικό <sid>. Το γεγονός αυτό προσθέτει το νέο ψηφοφόρο στο δέντρο ψηφοφόρων του εκλογικού τµήµατος µε αναγνωριστικό <sid>. Προσοχή: Η εισαγωγή θα πρέπει να γίνεται µε τρόπο ώστε το δέντρο ψηφοφόρων του εκλογικού τµήµατος µε αναγνωριστικό <sid> να παραµένει πλήρες (όπως ζητείται στην Άσκηση 3 της 3 ης Σειράς Ασκήσεων). Επιπλέον σ αυτό το σηµείο αυξάνεται ο αριθµός εγγεγραµµένων ψηφοφόρων του εκλογικού τµήµατος κατά ένα. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: R <vid> <did> <sid> Voters = <vid 1 >, <vid 2 >,..., <vid n > όπου n είναι ο αριθµός των ψηφοφόρων του εκλογικού τµήµατος µε αναγνωριστικό <sid> και για κάθε i {1,, n}, <vid i > είναι το αναγνωριστικό του i-οστού ψηφοφόρου στο δέντρο των ψηφοφόρων του εκλογικού τµήµατος µε αναγνωριστικό <sid>, στη διάταξη που προκύπτει όταν εφαρµόζεται ενδοδιατεταγµένη διάσχιση στο δέντρο ψηφοφόρων του εκλογικού τµήµατος µε αναγνωριστικό <sid>. U <vid> <sid> Γεγονός τύπου unregister voter το οποίο σηµατοδοτεί τη διαγραφή του ψηφοφόρου (voter) µε αναγνωριστικό <vid> από το εκλογικό τµήµα µε αναγνωριστικό <sid>. Κατά το γεγονός αυτό εντοπίζεται η κατάλληλη αλυσίδα εκλογικών τµηµάτων βάσει της συνάρτησης κατακερµατισµού και στη συνέχει εκτελείται αναζήτηση σε όλα τα δέντρα ψηφοφόρων µέχρι να βρεθεί και να διαγραφεί ο ζητούµενος ψηφοφόρος. Προσοχή: Η διαγραφή θα πρέπει να γίνεται µε τρόπο ώστε το δέντρο να παραµένει πλήρες. Επιπλέον στο σηµείο αυτό µειώνεται ο αριθµός εγγεγραµµένων ψηφοφόρων του συγκεκριµένου εκλογικού τµήµατος κατά ένα. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: U <vid> <sid> Voters = <vid 1 >, <vid 2 >,..., <vid n > όπου n είναι ο αριθµός των ψηφοφόρων του εκλογικού τµήµατος µε αναγνωριστικό <sid> και για κάθε i {1,, n}, <vid i > είναι το αναγνωριστικό του i-οστού ψηφοφόρου στο δέντρο των ψηφοφόρων του εκλογικού τµήµατος µε αναγνωριστικό <sid>, στη διάταξη που προκύπτει όταν εφαρµόζεται 10

11 ενδοδιατεταγµένη διάσχιση στο δέντρο ψηφοφόρων του εκλογικού τµήµατος µε αναγνωριστικό <sid>. V <vid> <sid> <cid> Γεγονός τύπου vote το οποίο σηµατοδοτεί τη διαδικασία ψήφου ενός ψηφοφόρου. Ο ψηφοφόρος µε αναγνωριστικό <vid> που ανήκει στο εκλογικό τµήµα µε αναγνωριστικό <sid> ψηφίζει τον υποψήφιο µε αναγνωριστικό <cid> (ή λευκό, ή άκυρο). Το γεγονός αυτό εντοπίζει πρώτα το εκλογικό τµήµα στον πίνακα κατακερµατισµού εκλογικών τµηµάτων. Στη συνέχεια εντοπίζει τον ψηφοφόρο στη δέντρο ψηφοφόρων του εκλογικού του τµήµατος και σηµειώνει ότι συµµετείχε στις εκλογές (voted). Σε αυτό το σηµείο προσµετράται και η ψήφος ως εξής. Αν το <cid> είναι ίσο µε το δεσµευµένο αναγνωριστικό -1, τότε αυξάνεται ο αριθµός των λευκών της περιφέρειας στην οποία ανήκει το εκλογικό τµήµα του ψηφοφόρου κατά ένα. Οµοίως, αν το <cid> είναι ίσο µε το δεσµευµένο αναγνωριστικό -2, τότε αυξάνεται ο αριθµός των άκυρων της περιφέρειας στην οποία ανήκει το εκλογικό τµήµα του ψηφοφόρου κατά ένα. Σε κάθε άλλη περίπτωση εντοπίζεται ο υποψήφιος µε αναγνωριστικό <cid> στο δέντρο υποψηφίων της επικράτειας και αυξάνεται ο αριθµός των ψήφων του. Επίπλέον σ αυτό το σηµείο θα πρέπει να αυξήσουµε τον αριθµό των ψήφων που έχει λάβει το κόµµα στο οποίο ανήκει ο υποψήφιος στη συγκεκριµένη εκλογική περιφέρεια, δηλαδή θα πρέπει να αυξάνεται ο µετρητής που είναι αποθηκευµένος στο κατάλληλο στοιχείο του πίνακα parties_votes της εκλογικής περιφέρειας στην οποία ανήκει το εκλογικό τµήµα του υποψηφίου. Για να γίνει αυτό εντοπίζουµε την περιφέρεια στην οποία εκλέγεται ο υποψήφιος χρησιµοποιώντας το αναγνωριστικό <did> της εγγραφής του υποψηφίου. Στην συνέχεια χρησιµοποιώντας το πεδίο <pid> της εγγραφής του υποψηφίου ως δείκτη στον πίνακα ψήφων των κοµµάτων (party_votes) της περιφέρειας που εντοπίσαµε στο προηγούµενο βήµα, αυξάνουµε το µετρητή κατα ένα. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: V <vid> <sid> <cid> <did> Party votes : <pid 1 > : <votes 1 > <pid 2 > : <votes 2 >... <pid k > : <votes k > blanks : <blanks> voids : <voids> όπου <did> είναι το αναγνωριστικό της περιφέρειας στην οποία εκλέγεται ο υποψήφιος µε αναγνωριστικό <cid>, k είναι ο αριθµός των κοµµάτων που συµµετέχουν στις εκλογές και για κάθε i {1,, k}, <pid i > είναι το αναγνωριστικό του i-οστού κόµµατος και <votes i > o αριθµός των ψήφων που έλαβε το κόµµα µε αναγνωριστικό <pid i > στην περιφέρεια στην οποία ανήκει ο υποψήφιος µε αναγνωριστικό <cid>. Επίσης, <blanks> είναι ο αριθµός των λευκών και <voids> ο αριθµός των άκυρων ψήφων στη συγκεκριµένη εκλογική περιφέρεια. 11

12 W Γεγονός τύπου split candidates το οποίο σηµατοδοτεί το διαχωρισµό των υποψήφιων ανά κόµµα και τη µεταφορά των υποψηφίων κάθε κόµµατος στο δέντρο υποψηφίων του κόµµατος το οποίο δεικτοδοτείται από το κατάλληλο στοιχείο του πίνακα κοµµάτων. Ο διαχωρισµός του δέντρου υποψηφίων της επικράτειας στα δένδρα υποψηφίων κάθε κόµµατος θα πρέπει να πραγµατοποιείται όπως στην Άσκηση 2 α της 3 ης Σειράς Ασκήσεων και άρα θα πρέπει να έχει πολυπλοκότητα Ο(<αριθµός_κοµµάτων>*h), όπου h είναι το ύψος του δέντρου των υποψηφίων της επικράτειας. Σε αυτή την προγραµµατιστική εργασία, η παράµετρος <αριθµός κοµµάτων> είναι ίση µε 5. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: W <pid 1 >Candidates : <cid 11 > <cid 12 >... <cid 1n1> <pid 2 > Candidates : <cid 21 > <cid 22 >... <cid 2n2>... <pid k > Candidates : <cid 51 > <cid 52 >... <cid 5nκ> όπου k είναι το πλήθος των κοµµάτων και για κάθε i {1,, k}, <pid i > είναι το αναγνωριστικό του i-κόµµατος και n i είναι ο αριθµός των υποψηφίων που ανήκουν στο i-στο κόµµα. Επιπρόσθετα, για κάθε j {1,, n}, <cid i,j > είναι το αναγνωριστικό του j-στου υποψηφίου που ανήκει στο i-στο κόµµα. M <did> Γεγονός τύπου count votes το οποίο σηµατοδοτεί την καµέτρηση ψήφων στην εκλογική περιφέρεια µε αναγνωριστικό <did>. Το γεγονός αυτό εκτελεί τις ακόλουθες ενέργειες για την εκλογική περιφέρεια µε ανανγωριστικό <did>: 1. Υπολογίζεται το εκλογικό µέτρο το οποίο ορίζεται ως ο λόγος του συνόλου των έγκυρων ψήφων στην εκλογική περιφέρεια (δηλαδή το άθροισµα των ψήφων όλων των κοµµάτων στην εκλογική περιφέρεια χωρίς τα λευκά και άκυρα) προς τον αριθµό των εδρών (seats) που αναλογούν στην περιφέρεια αυτή. 2. Υπολογίζονται πόσοι υποψήφιοι θα εκλεγούν από κάθε κόµµα στην περιφέρεια διαιρώντας το σύνολο έγκυρων ψήφων που έλαβε το κόµµα µε το εκλογικό µέτρο, µε στρογγυλοποίηση προς τα κάτω. Το νούµερο αυτό προστίθεται στο πεδίο nelected του αντίστοιχου κόµµατος στον πίνακα κοµµάτων (parties), ενώ ταυτόχρονα αφαιρείται από τις διαθέσιµες έδρες της περιφέρειας (πεδίο seats). 3. Για κάθε κόµµα και για κάθε έδρα που αυτό δικαιούται στην περιφέρεια µε αναγνωριστικό <did> εντοπίζονται οι υποψήφιοι µε τις περισσότερες ψήφους από το δέντρο υποψηφίων του κόµµατος (party_candidates). Έστω ότι ο συνολικός αριθµός των υποψηφίων που θα εκλέξει 12

13 το πρώτο κόµµα είναι <max_party_seats>. Χρησιµοποιούµε έναν βοηθητικό πίνακα µε <max_party_seats> στοιχεία (ένα µέρος του οποίου θα χρησιµοποιούµε επαναληπτικά στη συνέχεια). Στον πίνακα αυτό θα αποθηκεύονται δείκτες προς του κόµβους του δέντρου υποψηφίων του κόµµατος (party_candidates). Για να εντοπισθούν οι υποψήφιοι που εκλέγονται σε κάθε περιφέρεια θα πρέπει, για κάθε κόµµα, να εφαρµοστεί ο παρακάτω αλγόριθµος (όπου θεωρούµε πως <pid> είναι το αναγνωριστικό του εκάστοτε κόµµατος για το οποίο εφαρµόζεται ο αλγόριθµος): o Για κάθε περιφέρεια, πραγµατοποιούνται οι εξής ενέργειες (όπου θεωρούµε ότι <did> είναι το αναγνωριστικό της εκάστοτε περιφέρειας για την οποία εφαρµόζεται ο αλγόριθµος): i. Έστω ότι <district_party_seats> είναι ο αριθµός των υποψηφίων του κόµµατος µε αναγνωριστικό <pid> που εκλέγονται στην περιφέρεια µε αναγνωριστικό <did>. Ο βοηθητικός πίνακας αρχικοποιείται µε τους <district_party_seats> πρώτους υποψηφίους του κόµµατος που πολιτεύονται σε αυτή την περιφέρεια (σύµφωνα µε την ενδοδιατεταγµένη διάσχιση του δένδρου υποψηφιών του κόµµατος). Ο πίνακας αυτός υλοποιεί ουρά προτεραιότητας, στην οποία η προτεραιότητα καθορίζεται από τον αριθµό των ψήφων που έχουν λάβει οι υποψήφιοι που αποθηκεύονται στον πίνακα (ζητείται δηλαδή να υλοποιηθεί σωρός). ii. Πραγµατοποιείται διάσχιση του δένδρου υποψηφίων του κόµµατος (party_candidates) µε αναγνωριστικό <pid> και για κάθε υποψήφιο που πολιτεύεται στην περιφέρεια µε αναγνωριστικό <did>, εξετάζεται αν ο αριθµός των ψήφων του είναι µεγαλύτερος από αυτών του υποψηφίου µε τις λιγότερες ψήφους στον βοηθητικό πίνακα. Αν συµβαίνει αυτό τότε αντικαθιστούµε τον υποψήφιο µε τις λιγότερες ψήφους στον πίνακα µε τον τρέχοντα υποψήφιο από το δέντρο υποψηφίων του κόµµατος. Η αντικατάσταση γίνεται έτσι ώστε ο βοηθητικός πίνακας να εξακολουθεί να είναι σωρός. iii. Μετά το τέλος της διάσχισης του δένδρου υποψηφίων του κόµµατος (party_candidates), ο βοηθητικός πίνακας θα περιέχει δείκτες στους κόµβους του δένδρου υποψηφίων του κόµµατος (party_candidates) που αντιστοιχούν σε όσους υποψήφιους εκλέγονται στην περιφέρεια µε αναγνωριστικό <did>. Για κάθε έναν από αυτούς τους υποψήφιους, θέτουµε το πεδίο elected της αντίστοιχης εγγραφής στην τιµή TRUE. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: 13

14 M <did> Seats = <cid 1 > <pid 1 > <votes 1 > <cid 2 > <pid 2 > <votes 2 >... <cid n > <pid n > <votes n > όπου n είναι ο αριθµός των εδρών στην εκλογική περιφέρεια µε αναγνωριστικό <did> και για κάθε i {1,, n}, <cid i >, <pid i >, <votes i > είναι το αναγνωριστικό, το κόµµα, και ο αριθµός ψήφων του i- οστού υποψηφίου που εκλέγεται στην εκλογική περιφέρεια, αντίστοιχα. G Γεγονός τύπου form government το οποίο σηµατοδοτεί την απόδοση των λοιπών αδιάθετων εδρών των εκλογικών περιφερειών. Βρίσκουµε το πρώτο κόµµα, το οποίο χάριν απλοποίησης της εργασίας, είναι το κόµµα που έχει συγκεντρώσει τις περισσότερες έδρες σε ολόκληρη την επικράτεια (δηλαδή είναι το κόµµα µε τη µεγαλύτερη τιµή στο πεδίο nelected του πίνακα κοµµάτων). Διανύουµε τον πίνακα εκλογικών περιφερειών και σε κάθε περιφέρεια, όσες έδρες περισσεύουν (ο αριθµός των εδρών αυτών δίνεται από την τιµή του πεδίου seats) προσµετρούνται στο πρώτο κόµµα. Έστω ότι αυτές είναι x για το κόµµα µε αναγνωριστικό <pid>. Για το κόµµα µε αναγνωριστικό <pid>, θα πρέπει να εφαρµοστεί και πάλι η διαδικασία που περιγράφεται στο βήµα 3 του γεγονότος M. Ωστόσο, αυτή τη φορά θα πρέπει να αγνοηθούν όσοι υποψήφιοι έχουν ήδη οριστεί ως εκλεγµένοι βουλευτές (δηλαδή έχουν την τιµή TRUE στο πεδίο elected), έτσι ώστε να εκλεγούν µόνο οι επιπρόσθετοι υποψήφιοι που απαιτούνται ανά περιφέρεια. Επιπλέον προσθέτουµε την τιµή x στο πεδίο nelected του κόµµατος µε αναγνωριστικό <pid>. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος, το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: G Seats = <did 1 > <cid 1 > <votes 1 > <did 2 > <cid 2 > <votes 2 >... <did n > <cid n > <votes n > όπου n είναι ο συνολικός αριθµός αδιάθετων εδρών σε όλες τις εκλογικές περιφέρειες και για κάθε i {1,, n}, <did i >, <cid i >, <votes i > είναι το αναγνωριστικό της εκλογικής περιφέρειας, το αναγνωριστικό του i-οστού υποψηφίου που εκλέγεται στη συγκεκριµένη εκλογική περιφέρεια και ο αριθµός ψήφων που έλαβε αντίστοιχα. 14

15 N Γεγονός τύπου form parliament το οποίο σηµατοδοτεί την εκλογή των µελών της Βουλής. Αρχικά, θα πρέπει για κάθε κόµµα, να γίνει διάσχιση του δένδρου υποψηφιών του κόµµατος και να διαγραφούν όλα τα στοιχεία του δένδρου που αντιστοιχούν σε υποψηφίους του κόµµατος που δεν εκλέγονται. Η διαγραφή όλων των υποψηφίων αυτών θα πρέπει να γίνει µε µια µόνο διάσχιση κάθε τέτοιου δένδρου. Τα δένδρα που προκύπτουν µετά τις διαγραφές περιέχουν µόνο εκείνους τους υποψηφίους του κόµµατος που έχουν εκλειγεί. Στη συνέχεια, θα πρέπει να συνενώνονται τα δέντρα αυτά, ακολουθώντας τον αλγόριθµο που ζητείται στην Άσκηση 2 α) της 3 ης Σειράς Ασκήσεων ώστε να δηµιουργηθεί η λίστα βουλευτών. Η λίστα βουλευτών θα πρέπει να είναι ταξινοµηµένη ως προς το αναγνωριστικό του κάθε βουλευτή. Η χρονική πολυπλοκότητα της συνένωσης θα πρέπει να είναι Ο(n), όπου n είναι ο συνολικός αριθµός των βουλευτών που εκλέγονται. Στο τέλος του γεγονότος αυτού, τα δέντρα υποψηφίων του κάθε κόµµατος θα πρέπει να περιέχουν του εκλεγµένους βουλευτές. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: N Members = <cid 1 > <pid 1 > <votes 1 > <cid 2 > <pid 2 > <votes 2 >... <cid n > <pid n > <votes n > όπου n είναι ο αριθµός των εκλεγµένων βουλευτών και για κάθε i {1,, n}, <cid i >, <pid i >, <votes i > είναι το αναγνωριστικό του i-οστού βουλευτή, το κόµµα στο οποίο ανήκει, και ο αριθµός των ψήφων που αυτός έλαβε, αντίστοιχα. I <did> Γεγονός τύπου print district το οποίο σηµατοδοτεί την εκτύπωση στοιχείων από την εκλογική περιφέρεια µε αναγνωριστικό <did>. Το γεγονός απαιτεί την αναζήτηση της εκλογικής περιφέρειας στον πίνακα εκλογικών περιφερειών. Κατά την εκτέλεση ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: 15

16 I <did> Seats = <seats> Blanks = <blanks> Voids = <voids> Party votes : <pid 1 > : <votes 1 > <pid 2 > : <votes 2 >... <pid k > : <votes k > όπου <seats> είναι ο αριθµός των εδρών που εκλέγει αυτή η εκλογική περιφέρεια, <blanks> είναι ο αριθµός των λευκών και <voids> είναι ο αριθµός των άκυρων ψήφων στην εκλογική περιφέρεια. Επίσης k είναι ο αριθµός των κοµµάτων που συµµετέχουν στις εκλογές και για κάθε i {1,, k}, <pid i > είναι το αναγνωριστικό του i-οστού κόµµατος και <votes i > o αριθµός των ψήφων που έλαβε το κόµµα µε αναγνωριστικό <pid i > στην περιφέρεια µε αναγνωριστικό <did>. J <sid> Γεγονός τύπου print station το οποίο σηµατοδοτεί την εκτύπωση στοιχείων από το εκλογικό τµήµα µε αναγνωριστικό <sid>. Κατά την εκτέλεση ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: J <sid> Registered = n Voters = <vid 1 > <voted 1 > <vid 2 > <voted 2 >... <vid n > <voted n > όπου n είναι ο αριθµός των εγγεγραµµένων ψηφοφόρων στο εκλογικό τµήµα µε αναγνωριστικό <sid> και για κάθε i {1,, n}, <vid i > και <voted i > είναι το αναγνωριστικό του i-οστού ψηφοφόρου και το αν ο ψηφοφόρος έχει ασκήσει το εκλογικό του δικαίωµα, αντίστοιχα. K <pid> Γεγονός τύπου print party το οποίο σηµατοδοτεί την εκτύπωση στοιχείων από το κόµµα µε αναγνωριστικό <pid>. Κατά την εκτέλεση ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: 16

17 K <pid> Elected = <cid 1 > <votes 1 > <cid 2 > <votes 2 >... <cid n > <votes n > όπου n είναι ο αριθµός των εκλεγµένων υποψηφίων του κόµµατος και για κάθε i {1,, n}, <cid i > είναι το αναγνωριστικό του i-οστού υποψηφίου στο δέντρο των υποψήφιων του κόµµατος, στη διάταξη που προκύπτει αν εφαρµοστεί ενδοδιατεταγµένη διάσχιση στο δέντρο και <votes i > είναι ο αριθµός των ψήφων που έλαβε ο υποψήφιος αυτός. L Γεγονός τύπου print parliament το οποίο σηµατοδοτεί την εκτύπωση των εκλεγµένων βουλευτών επικράτειας. Κατά την εκτέλεση ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: L Members = <cid 1 > <pid 1 > <votes 1 > <cid 2 > <pid 2 > <votes 2 >... <cid n > <pid n > <votes n > όπου n είναι ο αριθµός των εκλεγµένων βουλευτών και για κάθε i {1,, n}, <cid i >, <pid i >, <votes i > είναι το αναγνωριστικό, το κόµµα, και ο αριθµός των ψήφων που έλαβε ο i-οστός βουλευτής, αντίστοιχα. Βαθµολογία A Announce elections 1 D Create district 2 S Create station 5 P Create party 2 C Create candidate 5 R Register voter 5 U Unregister voter 5 17

18 V Vote 5 W Split candidates 13 M Count votes 15 G Form government 15 N Form parliament 12 I Print district 1 J Print station 1 K Print party 1 L Print parliament 1 Δεν κάνει compile 5 Δεν τρέχει και δεν τρέχουν τα test-files 6 18

19 Δοµές Δεδοµένων Στη συνέχεια παρουσιάζονται οι δοµές σε C που πρέπει να χρησιµοποιηθούν για την υλοποίηση της παρούσας εργασίας. extern int ahashtable_size_g; /* The size of the stations hashtable */ extern unsigned int max_stations_g; /* The maximum station */ /* This array is defined in main.c */ extern unsigned int primes_g[160]; struct candidate { int cid; /* 0 and 1 are reserved for blanks and voids */ int pid; int did; int votes; int elected; struct candidate *lc; struct candidate *rc; }; struct candidate_1 { int cid; int pid; int did; int votes; struct candidate_1 *next; }; struct party { int pid; int nelected; struct candidate *party_candidates; /* Singly- linked binary tree, sorted by cid */ }; struct parliament { }; struct candidate_1 *members; /* Singly- linked list, sorted by cid */ 19

20 struct voter { int vid; int voted; struct voter *parent; struct voter *lc; struct voter *rc; }; struct station { int sid; int did; int registered; /* Increment on new voter */ struct voter *voters; struct station *next; }; struct district { int did; int seats; int blanks; int voids; int party_votes[5]; }; struct district Districts[56]; struct party Parties[5]; struct parliament Parliament; 20

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πληροφορική 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): επιστρέφει

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 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: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2017-2018 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

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

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

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

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

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

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

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

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

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

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

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

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2018-2019 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

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

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

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

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

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

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Κατακερματισμός Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός 1 Κατακερματισμός Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή (ως τρόπος οργάνωσης αρχείου) μέγεθος

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

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

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

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

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

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

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

Προγραµµατισµός Ι (ΗΥ120)

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεµένες Δοµές - Λίστες Δοµές δεδοµένων! Ένα τυπικό πρόγραµµα επεξεργάζεται δεδοµένα Πώς θα τα διατάξουµε? 2 Τι λειτουργίες θέλουµε να εκτελέσουµε? Πώς θα υλοποιήσουµε

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

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t)

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t) Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 18: ιασυνδεµένες οµές - Λίστες ιασυνδεδεµένες δοµές δεδοµένων Η µνήµη ενός πίνακα δεσµεύεται συνεχόµενα. Η πρόσβαση στο i-οστό στοιχείο είναι άµεσηκαθώς η διεύθυνση του

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

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

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

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

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

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

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

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Κατακερματισμός 1 Αποθήκευση εδομένων (σύνοψη) Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Παραδοσιακά, μία σχέση (πίνακας/στιγμιότυπο) αποθηκεύεται σε ένα αρχείο Αρχείο δεδομένων

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

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) Ένα κόκκινο-µαύρο δένδρο είναι ένα δυαδικό δένδρο αναζήτησης στο οποίο οι κόµβοι µπορούν να χαρακτηρίζονται από ένα εκ των δύο χρωµάτων: µαύρο-κόκκινο. Το χρώµα της

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

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2 Πρόβληµα (ADT) Λεξικού Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2 Πρόβληµα (ADT) Λεξικού Δυναµικά µεταβαλλόµενη συλλογή αντικειµένων που αναγνωρίζονται µε κλειδί (π.χ. κατάλογοι,

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

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

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

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

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

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

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

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

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

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

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

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

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

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

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

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

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

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

Ο ΑΤΔ Λεξικό. Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος. Υλοποιήσεις Ο ΑΤΔ Λεξικό Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος Υλοποιήσεις Πίνακας με στοιχεία bit (0 ή 1) (bit vector) Λίστα ακολουθιακή (πίνακας) ή συνδεδεμένη Είναι γνωστό το μέγιστο

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2014-2015 Επιμέλεια: Ομάδα Διαγωνισμάτων από το Στέκι των Πληροφορικών Θέμα Α Α1. α. Να γράψετε στο τετράδιό σας

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

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

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Σχετικές έννοιες 8.3 Υλοποίηση δοµών δεδοµένων 8.4 Μια σύντοµη µελέτη περίπτωσης 8.5 Προσαρµοσµένοι τύποι δεδοµένων 1 Βασικές δοµές

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

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας Περιεχόμενα 14.1 Διωνυμικά Δένδρα... 255 14.2 Διωνυμικές Ουρές... 258 14.1.1 Εισαγωγή στοιχείου σε διωνυμική ουρά... 258 14.1.2 Διαγραφή μεγίστου από διωνυμική

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 17 Σωροί (Heaps) έκδοση 10 1 / 19 Heap Σωρός Ο σωρός είναι μια μερικά ταξινομημένη δομή δεδομένων που υποστηρίζει

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

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

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

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

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

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

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

ΕΡΓΑΣΙΑ 4. Εκλογικό Σύστημα με Μεταφορά και Συσσώρευση Ψήφων. Ημερομηνία Ανάρτησης: 16/04/2018 Ημερομηνία Παράδοσης: 04/05/2018, 09:00

ΕΡΓΑΣΙΑ 4. Εκλογικό Σύστημα με Μεταφορά και Συσσώρευση Ψήφων. Ημερομηνία Ανάρτησης: 16/04/2018 Ημερομηνία Παράδοσης: 04/05/2018, 09:00 1. Εισαγωγή ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΙΑ 4 Εκλογικό Σύστημα με Μεταφορά και Συσσώρευση Ψήφων Ημερομηνία Ανάρτησης: 16/04/2018 Ημερομηνία Παράδοσης: 04/05/2018, 09:00 Για την τελευταία

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

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

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