ΗΥ-240 ο%ές εδο%ένων Προγραμματιστική Εργασία Αντώνης Πα)αϊωάννου Μέρος A
Διαδικάστικά Παράδοση: Σάββατο, 14 Νοεμβρίου 2016, ώρα 23:59. Compile και run σε μηχανήματα της σχολής Μέρος της βαθμολογίας Τρόπος Παράδοσης: turnin http://csd.uoc.gr/~hy240b/current/submit.php Online: Main (java, C) Test files http://csd.uoc.gr/~hy240a
Χρήσιμες Δομές
Animal aid: Αναγνωριστικό (int) )ου χαρακτηρίζει 9οναδικά το ζώο. eco_id: Αναγνωριστικό (int) )ου χαρακτηρίζει 9οναδικά το οικοσύστη9α στο ο)οίο κατοικεί το ζώο. aid 10 eco_id : είκτης (τύ)ου animal) στον ε)ό9ενο κό9βο της λίστας ζώων.
Animal list Λίστα ζώων Α)λά συνδεδε9ένη Tαξινο9η9ένη σε αύξουσα διάταξη 9ε βάση το αναγνωριστικό του κάθε ζώου aid 10 aid 20 aid 30 aid 40 eco_id eco_id eco_id eco_id
Ecosystem eco_id: Αναγνωριστικό (int) του οικοσυστή9ατος. animal_count: Μετρητής (int) 9ε το )λήθος των ζώων )ου κατοικούν στο οικοσύστη9α. animals_list: είκτης (τύ)ου animal) στο )ρώτο στοιχείο της λίστας ζώων του οικοσυστή9ατος eco_id 10 animal_count Α)λά συνδεδε9ένη λίστα Κό9βοι τύ)ου animal Ταξινο9η9ένη 9ε βάση το αναγνωριστικό των ζώων animals_list
Ecosystems Array Πίνακας σταθερού 9εγέθους 50 θέσεων Κάθε θέση του )ίνακα α)οτελεί 9ια εγγραφή τύ)ου ecosystem eco_id 1 eco_id 2 eco_id 49 eco_id 50 animal_count animal_count animal_count animal_count animals_list animals_list animals_list animals_list
Ecosystems Array eco_id 10 aid 10 aid 22 aid 35 aid 60 animal_count eco_id eco_id eco_id eco_id animals_list eco_id 20 animal_count animals_list aid 12 eco_id...... eco_id 49 aid 9 aid 54 aid 56 animal_count eco_id eco_id eco_id animals_list eco_id 50 animal_count aid 20 eco_id aid 44 eco_id animals_list
Visitor vid: Αναγνωριστικό (int) του ε)ισκέ)τη. last_visit: Πεδίο (int) )ου αντιστοιχεί στο έτος της τελευταίας ε)ίσκεψής. visits: Μετρητής (int) του αριθ9ού των ε)ισκέψεων του ε)ισκέ)τη στο )άρκο. : είκτης (τύ)ου visitor) στον ε)ό9ενο κό9βο της λίστας ε)ισκε)τών. vid 10 last_visit visits
Visitors list Λίστα ε)ισκε)τών. Α)λά συνδεδε9ένη. Μη-ταξινο9η9ένη Με κό9βο φρουρό ιαχειριστικός κό9βος τύ)ου visitor Πεδία vid, last_visit, visits τι9ή -1 Πεδίο τι9ή NULL vid 10 vid 5 vid 22 Sentinal -1 last_visit last_visit last_visit -1 visits visits visits -1
Employee eid: Αναγνωριστικό του εργαζο9ένου : Μετρητής 9ε το )λήθος των οικοσυστη9άτων για τα ο)οία είναι υ)εύθυνος ο εργαζό9ενος. : είκτης στον ε)ό9ενο κό9βο της λίστας εργαζο9ένων. : είκτης στον )ροηγού9ενο κό9βο της λίστας εργαζο9ένων. : είκτης (τύ)ου animal) στο )ρώτο στοιχείο της λίστας οικοσυστη9άτων του εργαζο9ένου: eid 36 Α)λά συνδεδε9ένη, 9η ταξινο9η9ένη Κάθε κό9βος )εριέχει τα ακόλουθα )εδία: eco_id: Αναγνωριστικό του οικοσύστη9ατος. : είκτης (τύ)ου eco) στον ε)ό9ενο κό9βο της λίστας οικοσυστη9άτων του εργαζο9ένου. eco_id 10
Employee list Λίστα εργαζο9ένων ι)λά-συνδεδε9ένη Μη ταξινο9η9ένη Με κό9βο φρουρό ιαχειριστικός κό9βος τύ)ου employee Πεδία eid, τι9ή -1 Πεδίο cos_list τι9ή NULL Κυκλική λίστα Το )εδίο του κό9βου φρουρού δείχνει στον )ρώτο κό9βο της λίστας Το )εδίο του )ρώτου κό9βου δείχνει στον κό9βο φρουρό της λίστας
Employee list eid 36 eid 22 eid 49-1 -1 Sentinel eco_id 10 eco_id 99 eco_id 55 eco_id 11 eco_id 33
L <aid> <eco_id> Εισαγωγή του ζώου 9ε αναγνωριστικό <aid> στη λίστα ζώων. <eco_id> το αναγνωριστικό του οικοσυστή9ατος )ου κατοικεί. Μετά την εισαγωγή η λίστα ζώων )αρα9ένει ταξινο9η9ένη.
D ιαχωρισ9ός των ζώων στα οικοσυστή9ατα στα ο)οία ζουν 9έσα στο ζωολογικό )άρκο. Κάθε ζώο της λίστας ζώων 9εταφέρεται στο αντίστοιχο κελί του )ίνακα οικοσυστη9άτων. Το index του )ίνακα ίσο 9ε την τι9ή του )εδίου eco_id της κάθε εγγραφής animal. Εκτέλεση σε χρόνο Ο(n), ό)ου n ο αριθ9ός των ζώων )ου )εριέχονται στη λίστα ζώων.
V <vid> <year> Ο ε)ισκέ)της 9ε αναγνωριστικό <vid> ε)ισκε)τεται το )άρκο το έτος <year> Αναζήτηση του vid στη λίστα ε)ισκε)τών: Αν βρεθεί τότε ανανεώνεται το )εδίο last_visit 9ε τι9ή <year>, αυξάνεται η τι9ή του 9ετρητή visits Αν δεν βρεθεί, δη9ιουργείται ο αντίστοιχος κό9βος και εισάγεται στη λίστα.
O <years_interval> ιαγραφή ε)ισκε)τών α)ό τη λίστα ε)ισκε)τών )ου η τελευταία ε)ίσκεψη )ραγ9ατο)οιήθηκε )ρίν α)ο <years_interval> έτη. Εκτέλεση σε χρόνο O(n), ό)ου n ο αριθ9ός των κό9βων της λίστας ε)ισκε)τών. Μία διάσχιση της λίστας
H <eid> Πρόσληψη ενός νέου εργαζό9ενου στο )άρκο Εισαγωγή νέου εργαζό9ενου στη λίστα εργαζο9ένων Αρχικά κενή λίστα οικοσυστη9άτων του εργαζο9ένου Εκτέλεση σε χρόνο O(1)
A <eid> <eco_id> Ανάθεση του οικοσυστή9ατος 9ε αναγνωριστικό <eco_id> στον εργαζό9ενο 9ε αναγνωριστικό <eid>. 1. Αναζήτηση του εργαζο9ένου <eid> στη λίστα εργαζο9ένων. 2. Εισαγωγή του οικοσυστή9ατος <eco_id> στη λίστα οικοσυστη9άτων του εργαζο9ένου )ου εντο)ίστηκε στο (1) Εκτέλεση όλων των ενεργειών σε χρόνο O(n) συνολικά, ό)ου n είναι το 9έγεθος της λίστας εργαζο9ένων.
R <eid> ιαγραφή του εργαζο9ένου <eid> α)ό τη λίστα εργαζο9ένων. Ανάθεση των οικοσυστη9άτων του σε έξι (6) άλλους εργαζό9ενους: 3 )ροηγού9ενους και 3 ε)ό9ενους στη λίστα εργαζο9ένων Ξεκινώντας α) τον τρίτο )ροηγού9ενο εργαζό9ενο 9έχρι τον τρίτο ε)ό9ενο στη λίστα εργαζο9ένων. Κάθε εργαζό9ενος θα λάβει ( / 6) νεα οικοσυστή9ατα.
eid 36 eid 22 eid 11 Xeid 55 eid 77 eid 88 eid 99 eco_id 10 eco_id 20 eco_id 50 eco_id 40 / 6 = 6 / 6 = 1 Ακέραιο α)οτέλεσ9α eco_id 30 eco_id 60
eid 36 eid 22 eid 11 Xeid 55 eid 77 eid 88 eid 99 eco_id 10 eco_id 20 eco_id 50 eco_id 40 eco_id 30 eco_id 60
eid 36 eid 22 eid 11 Xeid 55 eid 77 eid 88 eid 99 eco_id 10 eco_id 50 eco_id 40 eco_id 60 / 6 = 4 / 6 = 0.66 εκαδικός < 1
eid 36 eid 22 eid 11 Xeid 55 eid 77 eid 88 eid 99 eco_id 10 eco_id 50 eco_id 40 eco_id 60
eid 36 eid 22 eid 11 Xeid 55 eid 77 eid 88 eid 99 eco_id 10 eco_id 20 eco_id 50 eco_id 40 / 6 = 7 / 6 = 1.16 εκαδικός > 1 eco_id 30 eco_id 90 eco_id 60
eid 36 eid 22 eid 11 Xeid 55 eid 77 eid 88 eid 99 eco_id 10 eco_id 20 eco_id 50 eco_id 40 eco_id 30 eco_id 90 eco_id 60
G - Αναγνώριση των 5 )ιο συχνών ε)ισκέ)τών Χρήση βοηθητικού )ίνακα 5 θέσεων. 1. Ο βοηθητικός )ίνακας αρχικο)οιείται 9ε τους 5 )ρώτους εργαζο9ένους της λίστας εργαζο9ένων. 2. Εξετάζετε τον κάθε κό9βο της λίστας εργαζο9ένων αν ο 9ετρητής visits έχει τι9ή 9εγαλύτερη α)ό τον εργαζό9ενο 9ε τις λιγότερες ε)ισκέψεις στον βοηθητικό )ίνακα. A. Αν ναι, αντικαθιστού9ε τον εργαζό9ενο αυτό του )ίνακα 9ε τον κό9βο της λίστας. B. Ε)ανυ)ολογίζετε τον ε)ισκέ)τη του )ίνακα 9ε τις λιγότερες ε)ισκέψεις 3. Μετά το τέλος της διάσχισης της λίστας εργαζο9ένων, ο βοηθητικός )ίνακας θα )εριέχει δείκτες στους κό9βους της λίστας )ου αντιστοιχούν στους 5 )ιο συχνούς ε)ισκέ)τες του )άρκου.
X Eκτύ)ωση όλων των οικοσυστη9άτων του )ίνακα οικοσυστη9άτων. Y Eκτύ)ωση όλων των ε)ισκε)τών της λίστας ε)ισκε)τών Z Eκτύ)ωση όλων των κό9βων της λίστα εργαζο9ένων
Διαδικάστικά Παράδοση: Σάββατο, 14 Νοεμβρίου 2016, ώρα 23:59. Compile και run σε μηχανήματα της σχολής Μέρος της βαθμολογίας Τρόπος Παράδοσης: turnin http://csd.uoc.gr/~hy240b/current/submit.php Online: Main (java, C) Test files http://csd.uoc.gr/~hy240a