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

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

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

Transcript

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

2 να ενώνει δύο λογαριασµούς που του ανήκουν. Για παράδειγµα, ας υποθέσουµε ότι ένας χρήστης έχει δύο λογαριασµούς, έναν για οικογενειακές φωτογραφίες και έναν για επαγγελµατικές. Ο χρήστης έχει τη δυνατότητα να αποφασίσει ότι θέλει να έχει µόνο ένα λογαριασµό όπου θα συγκεντρώσει τις φωτογραφίες των δύο άλλων λογαριασµών του. να διαχωρίζει το σύνολο των φωτογραφιών που περιέχονται σε κάποιο λογαριασµό του σε δύο ή περισσότερα σύνολα κάθε ένα εκ των οποίων θα ανήκει σε διαφορετικούς λογαριασµούς αυτού του χρήστη. Για παράδειγµα, κάποιος χρήστης µπορεί να επιθυµεί όλες οι φωτογραφίες που έχει τραβήξει στην Ήπειρο να τοποθετηθούν σε ένα νέο λογαριασµό. Αναλυτική Περιγραφή Ζητούµενης Υλοποίησης Για την υλοποίηση της παραπάνω υπηρεσίας θα χρειαστείτε τις ακόλουθες κεντρικές δοµές δεδοµένων: 1. Μία µη-ταξινοµηµένη απλά-συνδεδεµένη λίστα µε κόµβο φρουρό που περιέχει τόσα στοιχεία όσοι και οι λογαριασµοί της υπηρεσίας, έναν για κάθε λογαριασµό. Αυτή η λίστα ονοµάζεται λίστα λογαριασµών (alist_p ) και παρουσιάζεται στο Σχήµα 1. G node 1 node 2 node 3 node k κόµβος φρουρός Σχήµα 1 2. Μία ταξινοµηµένη, βάσει του πεδίου, διπλά συνδεδεµένη λίστα µε όλες τις φωτογραφίες που έχουν ανεβάσει όλοι οι χρήστες της υπηρεσίας. Αυτή η λίστα ονοµάζεται λίστα φωτογραφιών (plist_p) και παρουσιάζεται στο Σχήµα 2. node 1 node 2 node 3 node m Σχήµα 2 Για την υλοποίηση των δοµών αυτών χρειάζονται οι ακόλουθοι τύποι εγγραφών (structs): 1. Κάθε στοιχείο της λίστας λογαριασµών είναι µια εγγραφή (ένα struct) τύπου account_t µε τα ακόλουθα πεδία: aid: Αναγνωριστικό του λογαριασµού. Ένας µοναδικός αριθµός που αντιστοιχεί στο λογαριασµό. myphotos: είκτης (τύπου myphoto_t *) στο πρώτο στοιχείο µιας ταξινοµηµένης (ως προς το πεδίο ) λίστας, κάθε στοιχείο της οποίας αντιστοιχεί σε µια φωτογραφία που ανήκει στο λογαριασµό. Η λίστα αυτή ονοµάζεται λίστα προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό aid. Κάθε στοιχείο της λίστας προσωπικών φωτογραφιών ενός λογαριασµού είναι µία εγγραφή (ένα struct) τύπου myphoto_t µε τα ακόλουθα πεδία: o o : Το αναγνωριστικό της φωτογραφίας. next: είκτης (τύπου myphoto_t *) στον επόµενο κόµβο της λίστας προσωπικών φωτογραφιών του λογαριασµού. next: είκτης (τύπου account_t *) στον επόµενο κόµβο της λίστας λογαριασµών. Μια εγγραφή τύπου account_t παρουσιάζεται στο Σχήµα 3. 2

3 2. Κάθε στοιχείο της λίστας φωτογραφιών είναι µια εγγραφή (ένα struct) τύπου photo_t µε τα ακόλουθα πεδία: aid myphotos Next Μία εγγραφή της λίστας προσωπικών φωτογραφιών του λογαριασµού aid Σχήµα 3: Εγγραφή τύπου account_t. : Αναγνωριστικό της φωτογραφίας. Είναι ένας µοναδικός αριθµός που αντιστοιχεί σε κάθε φωτογραφία. aid: Αναγνωριστικό του λογαριασµού στον οποίο ανήκει η φωτογραφία. location: Αναγνωριστικό της τοποθεσίας όπου τραβήχτηκε η φωτογραφία. date: Ένας αριθµός που αντιστοιχεί στην ηµεροµηνία στην οποία δηµιουργήθηκε η φωτογραφία. Η ηµεροµηνία πρέπει να είναι της µορφής YYYYMMDD. Για παράδειγµα, η 28 η Οκτωβρίου 2013 αναπαρίσταται ως ενώ η 5 η Ιανουαρίου 2011 αναπαρίσταται ως Αυτή η αναπαράσταση µας επιτρέπει να συγκρίνουµε εύκολα ηµεροµηνίες για να δούµε πια προηγείται χρονικά. Για παράδειγµα το είναι µεγαλύτερο του , άρα η 28 η Οκτωβρίου 2013 έπεται της 5 ης Ιανουαρίου tags: Πίνακας 5 θέσεων που ονοµάζεται πίνακας επισηµάνσεων. Κάθε θέση του πίνακα περιέχει ένα δείκτη (τύπου account_t *) σε έναν κόµβο της λίστας λογαριασµών. Ο λογαριασµός αυτός αντιστοιχεί σε χρήστη που έχει επισηµανθεί (γίνει tag) σε αυτή τη φωτογραφία. likes: είκτης στο πρώτο στοιχείο µιας λίστας, που ονοµάζεται λίστα οπαδών της φωτογραφίας µε αναγνωριστικό. Κάθε στοιχείο αυτής της λίστας είναι µία εγγραφή (ένα struct) τύπου like_t µε τα ακόλουθα πεδία: Pid o o aptr: είκτης προς µια εγγραφή της λίστας λογαριασµών που αντιστοιχεί σε λογαριασµό που έχει δηλώσει πως του αρέσει η φωτογραφία (έχει κάνει like στην φωτογραφία). next: είκτης (τύπου like_t *) στον επόµενο κόµβο της λίστα οπαδών της φωτογραφίας. next: είκτης (τύπου photo_t *) στον επόµενο κόµβο της λίστας φωτογραφιών. prev: είκτης (τύπου photo_t *) στον προηγούµενο κόµβο της λίστας φωτογραφιών. Μια εγγραφή τύπου photo_t παρουσιάζεται στο Σχήµα 4. tags aid location date likes next prev aptr 1 aptr 2 aptr 3 aptr 4 είκτες προς εγγραφές της λίστας λογαριασµών 3

4 Σχήµα 4: Εγγραφή τύπου photo_t. Το Σχήµα 5 παρουσιάζει τις δοµές της προγραµµατιστικής εργασίας µε συγκεντρωτικό τρόπο όπου, για λόγους απλότητας, στις εγγραφές (structs) τύπου photo_t δεν εµφανίζονται τα στατικά πεδία (εµφανίζονται µόνο τα πεδία που αποθηκεύουν δείκτες). Συγκεκριµένα, τα πεδία κάθε κόµβου της λίστας φωτογραφιών που εµφανίζονται στο Σχήµα 5 είναι τα εξής: tags, likes, prev και next µε αυτή τη σειρά. myphotos tags aid likes tags aid tags myphotos aid likes tags aid... tags... myphotos aid likes tags aid λίστα φωτογραφιών G λίστα λογαριασµών είκτης NULL Σχήµα 5: οµές δεδοµένων πρώτης φάσης προγραµµατιστικής εργασίας. 4

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

6 για κάθε j, 1 j m, <l j > είναι το αναγνωριστικό της j-οστής φωτογραφίας που είχε οπαδό τον προς διαγραφή λογαριασµό. Σηµειώνεται ότι από τις εγγραφές στη λίστα φωτογραφιών που αντιστοιχούσαν στις φωτογραφίες αυτές αφαιρέθηκαν τα εν λόγω likes. U <> <aid> <location> <date>: Γεγονός τύπου Upload photo το οποίο σηµατοδοτεί την ανάρτηση (upload) µίας νέας φωτογραφίας στο σύστηµα. Η νέα αυτή φωτογραφία θα έχει αναγνωριστικό <>. Το αναγνωριστικό του λογαριασµού που έκανε την ανάρτηση θα είναι <aid>, η τοποθεσία <location>, η ηµεροµηνία λήψης <date>, η λίστα οπαδών της φωτογραφίας (likes) θα είναι κενή και ο πίνακας επισηµάνσεων άδειος. Η νέα φωτογραφία πρέπει να τοποθετηθεί στη σωστή θέση της λίστας φωτογραφιών. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: U <> <aid> <location> <date> DONE PREDG = <G>, SUCCG = <sidg>, PREDL = <L>, SUCCL = <sidl> όπου: <G> και <sidg> είναι τα αναγνωριστικά της προηγούµενης και της επόµενης φωτογραφίας, αντίστοιχα, της προς εισαγωγή φωτογραφίας στη λίστα φωτογραφιών. <L> και <sidl> είναι τα αναγνωριστικά της προηγούµενης και της επόµενης φωτογραφίας, αντίστοιχα, της προς εισαγωγή φωτογραφίας στη λίστα προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid>. B <>: Γεγονός τύπου Burn photo το οποίο σηµατοδοτεί την αφαίρεση της φωτογραφίας µε αναγνωριστικό <> από το σύστηµα. Κατά την αφαίρεση µίας φωτογραφίας από το σύστηµα πρέπει να διαγράφονται και όλες οι πληροφορίες σχετικά µε αυτήν και εποµένως και όλα τα στοιχεία της λίστας οπαδών της φωτογραφίας αυτής. Ακόµη θα πρέπει να διαγράφεται ο αντίστοιχος κόµβος από την λίστα προσωπικών φωτογραφιών του λογαριασµού που ανέβασε την προς-διαγραφή φωτογραφία. Επίσης, για ευκολότερη αποσφαλµάτωση του κώδικα που θα δηµιουργήσετε συνίσταται ισχυρά να αναθέτετε την τιµή NULL σε κάθε στοιχείο του πίνακα επισηµάνσεων της εγγραφής που αντιστοιχεί στην προςδιαγραφή φωτογραφία. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: B <> <aid> LIKES = <aid 1, aid 2,... aid n > DONE PREDG = <G>, SUCCG = <sidg> PREDL = <L> SUCCL = <sidl> όπου n είναι το µέγεθος της λίστας οπαδών της φωτογραφίας µε αναγνωριστικό <>: <aid> είναι το αναγνωριστικό του λογαριασµού στον οποίο ανήκει η προς διαγραφή φωτογραφία, για κάθε j, 1 j n, <aid j > είναι τo αναγνωριστικό του λογαριασµού στον οποίο δείχνει το j- οστό στοιχείο της λίστας οπαδών της προς διαγραφή φωτογραφίας. <G> και <sidg> είναι τα αναγνωριστικά της προηγούµενης και της επόµενης φωτογραφίας, αντίστοιχα, της προς διαγραφή φωτογραφίας στη λίστα των φωτογραφιών. 6

7 <L> και <sidl> είναι τα αναγνωριστικά της προηγούµενης και της επόµενης φωτογραφίας, αντίστοιχα, της προς διαγραφή φωτογραφίας στη λίστα προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid>. L <aid> <>: Γεγονός τύπου Like photo το οποίο σηµατοδοτεί την προσθήκη ενός κόµβου στη λίστα οπαδών της φωτογραφίας µε αναγνωριστικό <>. Ο κόµβος αυτός θα αποθηκεύει έναν δείκτη προς το στοιχείο µε αναγνωριστικό <aid> της λίστας λογαριασµών. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: L <aid> <> DONE T <aid> <>: Γεγονός τύπου Tag το οποίο σηµατοδοτεί την προσθήκη ενός δείκτη στον λογαριασµό µε αναγνωριστικό <aid> στον πίνακα επισηµάνσεων της φωτογραφίας µε αναγνωριστικό <>. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: T <aid> <> DONE M <aid1> <aid2> <aid3>: Γεγονός τύπου Merge accounts το οποίο σηµατοδοτεί τη συνένωση των λογαριασµών µε αναγνωριστικά <aid1> και <aid2> σε ένα νέο λογαριασµό µε αναγνωριστικό <aid3>. Κατά τη συνένωση θα πρέπει: να συνενωθούν οι δύο λίστες προσωπικών φωτογραφιών σε µία νέα ταξινοµηµένη λίστα η οποία θα αποτελέσει την λίστα προσωπικών φωτογραφιών για το νέο λογαριασµό. Αυτό θα πρέπει να επιτευχθεί σε χρόνο Ο(n1+n2), όπου n1 και n2 είναι το πλήθος των στοιχείων στις λίστες προσωπικών φωτογραφιών των λογαριασµών <aid1> και <aid2>, αντίστοιχα, να αντικατασταθούν οποιεσδήποτε αναφορές προς τους λογαριασµούς µε αναγνωριστικά <aid1> και <aid2> µε αναφορές στον λογαριασµό µε αναγνωριστικό <aid3>. Αναφορές µπορεί να υπάρχουν στις λίστες οπαδών και στους πίνακες επισηµάνσεων των διαφόρων φωτογραφιών. Στην περίπτωση όπου και οι δύο λογαριασµοί έχουν επισηµανθεί ή/και έχουν δηλώσει την αρέσκεια τους (like) για µία φωτογραφία, καλό θα ήταν να αντικαθίσταται η πρώτη αναφορά µε µία αναφορά στον λογαριασµό µε αναγνωριστικό <aid3> και η δεύτερη να διαγράφεται. Όποτε αν µία φωτογραφία είχε δύο like από του λογαριασµούς µε αναγνωριστικά <aid1> και <aid2>, µετά το πέρας της εκτέλεσης του γεγονότος θα πρέπει να έχει ένα like από τον λογαριασµό µε αναγνωριστικό <aid3>. να διαγραφούν οι λογαριασµοί µε αναγνωριστικά <aid1> και <aid2> από την λίστα λογαριασµών. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: Μ <aid1> <aid2> <aid3> MYPHOTOS1 = <m1 1, m1 2,, m1 m > MYPHOTOS2 = <m2 1, m2 2,, m2 n > MYPHOTOS3 = <m3 1, m3 2,, m3 k > UPDATED = <u 1, u 2, u r > DONE όπου: m είναι το µέγεθος της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό 7

8 <aid1>, n είναι το µέγεθος της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid2>, k είναι το µέγεθος της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid3> και r είναι το πλήθος των φωτογραφιών για τις οποίες ισχύει πως κάποιο στοιχείο του πίνακα επισηµάνσεων τους ή κάποιο στοιχείο της λίστας οπαδών τους ενηµερώθηκε µετά τη συνένωση και: για κάθε j, 1 j m, <m1 j > είναι τo αναγνωριστικό του λογαριασµού στον οποίο δείχνει το j-οστό στοιχείο της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid1>, για κάθε j, 1 j n, <m2 j > είναι τo αναγνωριστικό του λογαριασµού στον οποίο δείχνει το j-οστό στοιχείο της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid2>, για κάθε j, 1 j k, <m3 j > είναι τo αναγνωριστικό του λογαριασµού στον οποίο δείχνει το j-οστό στοιχείο της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid3>, για κάθε j, 1 j r, <u j > είναι τo αναγνωριστικό της φωτογραφίας της οποίας ανανεώθηκε η λίστα οπαδών της ή/και ο πίνακας επισηµάνσεων της λόγω της συνένωσης των λογαριασµών. S <aid1> <aid2> <aid3> <location>: Γεγονός τύπου Split account το οποίο σηµατοδοτεί το διαχωρισµό του λογαριασµού µε αναγνωριστικό <aid1> σε δύο νέους λογαριασµούς µε αναγνωριστικά <aid2> (για τον πρώτο από αυτούς) και <aid3> (για το δεύτερο). Όσες φωτογραφίες έχουν ληφθεί στη τοποθεσία <location> θα πρέπει να εισαχθούν (ταξινοµηµένες βάσει του πεδίου ) στην λίστα προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid3> και όλες οι υπόλοιπες στην λίστα προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid2>. Ακόµη θα πρέπει να ενηµερώνεται κατάλληλα και το πεδίο <aid> των στοιχείων της λίστας φωτογραφιών που αντιστοιχούν σε κάθε φωτογραφία που περιέχεται στις λίστες αυτές. Τυχόν αναφορές στον λογαριασµό µε αναγνωριστικό <aid1> αντικαθίστανται µε αναφορές στον λογαριασµό µε αναγνωριστικό <aid2>. Αναφορές µπορεί να υπάρχουν στις λίστες οπαδών των στοιχείων της λίστας φωτογραφιών και στους πίνακες επισηµάνσεων των στοιχείων αυτών. Μετά το πέρας της εκτέλεσης ενός τέτοιου γεγονότος το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: S <aid1> <aid2> <aid3> <location> DONE MYPHOTOS1 = <m1 1, m1 2,, m1 m > MYPHOTOS2 = <m2 1, m2 2,, m2 n > MYPHOTOS3 = <m3 1, m3 2,, m3 k > UPDATED = <u 1, u 2, u r > όπου: m είναι το µέγεθος της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid1>, n είναι το µέγεθος της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid2>, k είναι το µέγεθος της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid3> και r είναι το πλήθος των φωτογραφιών για τις οποίες ισχύει πως κάποιο στοιχείο του πίνακα επισηµάνσεων τους ή κάποιο στοιχείο της λίστας οπαδών τους ενηµερώθηκε µετά τη συνένωση και: για κάθε j, 1 j m, <m1 j > είναι τo αναγνωριστικό του λογαριασµού στον οποίο δείχνει το j-οστό στοιχείο της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid1>, για κάθε j, 1 j n, <m2 j > είναι τo αναγνωριστικό του λογαριασµού στον οποίο δείχνει το j-οστό στοιχείο της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid2>, για κάθε j, 1 j k, <m3 j > είναι τo αναγνωριστικό του λογαριασµού στον οποίο δείχνει το j-οστό στοιχείο της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό 8

9 <aid3>, για κάθε j, 1 j r, > <u j > είναι τo αναγνωριστικό της φωτογραφίας της οποίας ανανεώθηκε η λίστα οπαδών ή/και ο πίνακας επισηµάνσεων της λόγω του διαχωρισµού του λογαριασµού µε αναγνωριστικό <aid1>. 9

10 F <YYYYMMDD>: Γεγονός τύπου Find το οποίο σηµατοδοτεί την αναζήτηση όλων των φωτογραφιών που έχουν ληφθεί την ηµεροµηνία <YYYYMMDD>. Μετά το πέρας του γεγονότος θα πρέπει να τυπώνεται η παρακάτω πληροφορία: F <YYYYMMDD> < 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> < 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> < 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: για κάθε j, 1 j 5, > <a<i>_id j > είναι τo αναγνωριστικό του λογαριασµού ο οποίος έχει επισηµανθεί στην φωτογραφία µε αναγνωριστικό < i > (δηλαδή υπάρχει δείκτης προς τον λογαριασµό αυτό στον πίνακα επισηµάνσεων του στοιχείου που αντιστοιχεί στη φωτογραφία στη λίστα φωτογραφιών) m i είναι το µέγεθος της λίστας οπαδών της φωτογραφίας µε αναγνωριστικό < i > και για κάθε j, 1 j m i, > <l<i>_aid j > είναι τo αναγνωριστικό του j-οστού στοιχείου της λίστας οπαδών της φωτογραφίας µε αναγνωριστικό <i> <location i > είναι η τοποθεσία στην οποία ελήφθη η φωτογραφία µε αναγνωριστικό < i >. 10

11 P <aid>: Γεγονός τύπου Print το οποίο σηµατοδοτεί το τύπωµα των στοιχείων της λίστας προσωπικών φωτογραφιών του λογαριασµού µε αναγνωριστικό <aid>. Για κάθε τέτοια φωτογραφία θα πρέπει επιπρόσθετα να τυπώνονται και οι πληροφορίες που αφορούν τη φωτογραφία, όπως οι επισηµάνσεις της, η τοποθεσία και η ηµεροµηνία που ελήφθη η φωτογραφία, καθώς και τα στοιχεία της λίστας οπαδών της. Σε αυτό το γεγονός το πρόγραµµα θα πρέπει να τυπώνει την ακόλουθη πληροφορία: P <aid> < 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 > < 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 > < 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 αναγνωριστικό του λογαριασµού ο οποίος έχει επισηµανθεί στην φωτογραφία µε αναγνωριστικό < i > m i είναι το µέγεθος της λίστας οπαδών της φωτογραφίας µε αναγνωριστικό < i > και για κάθε j, 1 j m n, > <l<i>_aid j > είναι τo αναγνωριστικό του j-οστού στοιχείου της λίστας οπαδών της φωτογραφίας µε αναγνωριστικό < i >, και <location i > είναι η τοποθεσία στην οποία ελήφθη η φωτογραφία µε αναγνωριστικό < i >, <YYYYMMDD i > είναι η ηµεροµηνία στην οποία ελήφθη η φωτογραφία µε αναγνωριστικό < i > (στη µορφή που περιγράφεται παραπάνω). 11

12 Α: Γεγονός τύπου Α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 < 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 > < 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 > < 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 αναγνωριστικό του λογαριασµού ο οποίος έχει επισηµανθεί στην φωτογραφία µε αναγνωριστικό < i > 12

13 m i είναι το µέγεθος της λίστας οπαδών της φωτογραφίας µε αναγνωριστικό < i > και για κάθε j, 1 j m n, > <l<i>_aid j > είναι τo αναγνωριστικό του j-οστού στοιχείου της λίστας οπαδών της φωτογραφίας µε αναγνωριστικό < i >, <location i > είναι η τοποθεσία στην οποία ελήφθη η φωτογραφία µε αναγνωριστικό < i >, <YYYYMMDD i > είναι η ηµεροµηνία στην οποία ελήφθη η φωτογραφία µε αναγνωριστικό < i > (στην µορφή που περιγράφεται παραπάνω). 13

14 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: < 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 > < 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 > < 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) < i > είναι τo αναγνωριστικό της i-οστής φωτογραφίας στη λίστα φωτογραφιών, (2) για κάθε j, 1 j 5, > <a<i>_id j > είναι τo αναγνωριστικό του λογαριασµού ο οποίος δεικτοδοτείται από τη j-οστή θέση του πίνακα επισηµάνσεων της φωτογραφίας µε αναγνωριστικό < i >, (3) m i είναι το µέγεθος της λίστας οπαδών της φωτογραφίας µε αναγνωριστικό < i >, (4) για κάθε c, 1 c m i, > <l<i>_aid c > είναι τo αναγνωριστικό του λογαριασµού που δεικτοδοτείται από το j-οστό στοιχείο της λίστας οπαδών της φωτογραφίας µε αναγνωριστικό < i >, (5) <location i > είναι η τοποθεσία στην οποία ελήφθη η φωτογραφία µε αναγνωριστικό < i > και (6) <YYYYMMDD i > είναι η ηµεροµηνία στην οποία ελήφθη η φωτογραφία µε αναγνωριστικό < i > (στην µορφή που περιγράφεται παραπάνω). 14

15 οµές εδοµένων Στη συνέχεια παρουσιάζονται οι δοµές σε 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; /** * Structure defining a node of the myphotos list (lista prosopikwn fwtografiwn) */ typedef struct myphoto { unsigned int ; /**< The photo identifier. >0 */ struct myphoto *next;/**< Pointer to the next node in the myphotos list */ } myphoto_t; /** * Structure defining a node of the account list (lista logariasmwn) */ typedef struct account { unsigned int aid; /**< The account's identifier */ myphoto_t *myphotos;/**< A list with the photos uploaded by * this account */ struct account *next; /**< Pointer to the next node of the * accounts list */ } account_t; /** * Structure defining a node of the likes list (lista opadwn) */ typedef struct like { account_t *aptr; /**< The account's identifier that liked * the photo. >0 */ struct like *next; /**< Pointer to the next node in the likes list */ } like_t; 15

16 /** * Structure defining a node of the photos list (lista fwtografiwn) */ typedef struct photo { unsigned int ; /**< 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 list with the accounts that * like the photo */ struct photo *next; /**< Pointer to the next node of * the photos list */ struct photo *prev; /**< Pointer to the previous node * of the photos list */ } photo_t; // For simplicity we define the two major data structures as global variables account_t* alist_p; /**< The accounts list (lista logariasmwn) */ photo_t* plist_p; /**< The photos list (lista fwtografiwn) */ //////////////////////////////////////////////////////////////////////////////// Συµβουλές Για λόγους ευκολότερης αποσφαλµάτωσης του κώδικα που θα δηµιουργήσετε, συνίσταται ισχυρά κατά την διαγραφή κόµβων να αναθέτετε την τιµή NULL στους δείκτες του προς διαγραφή στοιχείου. Ακόµη συνίσταται να αναθέτεται την τιµή 0 στα υπόλοιπα πεδία που είναι τύπου (unsigned int). 16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραµµατιστική Εργασία 2 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 20 Νοεµβρίου 2012 ΗΥ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 Εισαγωγή Διαδικαστικά Θεματολογία Δομές Χρηστών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Οργάνωση εδομένων Κεφάλαιο 11ο ομές εδομένων

Εισαγωγή στην επιστήμη των υπολογιστών. Οργάνωση εδομένων Κεφάλαιο 11ο ομές εδομένων Εισαγωγή στην επιστήμη των υπολογιστών Οργάνωση εδομένων Κεφάλαιο 11ο ομές εδομένων 1 ομή εδομένων Μια δομή δεδομένων (data structure) χρησιμοποιεί μια συλλογή από σχετικές μεταξύ τους μεταβλητές, οι οποίες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων 1. Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως εξής: (i) Διαδοχική χορήγηση μνήμης Υποθέτουμε ότι οι λίστες μας έχουν μέγιστο μέγεθος max και χρησιμοποιούμε τη δομή type elements[max];

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεμένες Δομές - Λίστες Διασυνδεδεμένες δομές δεδομένων Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα. Η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση

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

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

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

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

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

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

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

διεύθυνση πρώτου στοιχείου διεύθυνση 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-οστό στοιχείο είναι άµεσηκαθώς η διεύθυνση του

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

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

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

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

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

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

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

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή υναµική έσµευση Μνήµης (συν.) Στην ενότητα αυτή θα µελετηθούν: Μια εφαρµογή συνδεδεµένων λιστών ιπλά συνδεδεµένες Λίστες ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Εφαρµογή Ζητούµενο: Πρόγραµµα που παίρνει σαν

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

Βασικές οµές εδοµένων

Βασικές οµές εδοµένων Βασικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αφηρηµένοι Τύποι εδοµένων Οι ΑΤ Στοίβα και Ουρά Υλοποίηση των ΑΤ Στοίβα και Ουρά µε ιαδοχική και υναµική Χορήγηση Μνήµης

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

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

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

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

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

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δομές Δεδομένων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Δομές Δεδομένων Μια δομή δεδομένων είναι μια συλλογή δεδομένων με κάποιες

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

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

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

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

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

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

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

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

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

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

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

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

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1 Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους L 1,..., L n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.

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

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

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

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

Στοίβες Ουρές - Λίστες

Στοίβες Ουρές - Λίστες Ενότητα 3 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους L 1,..., L n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.

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

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

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

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

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl232

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

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

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

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

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V Γράφοι Ορολογία γράφος ή γράφηµα (graph) Ορισµός: G = (V, E) όπου V:ένα σύνολο E:µια διµελής σχέση στο V Ορολογία (συνέχεια) κάθε v V ονοµάζεται κορυφή (vertex) ή κόµβος (node) κάθε (v 1, v 2 ) Ε ονοµάζεται

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

ιαφάνειες παρουσίασης #5 (β)

ιαφάνειες παρουσίασης #5 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

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

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

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

υναµικές οµές εδοµένων

υναµικές οµές εδοµένων υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση

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

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

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

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

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

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

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

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

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

Ενότητα 2 Στοίβες Ουρές - Λίστες

Ενότητα 2 Στοίβες Ουρές - Λίστες Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους e 1,..., e n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.

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

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

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

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

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990, ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής & Τηλεπικοινωνιών Μια σημείωση από τον Α. Δελή για το άρθρο: W. Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, Comms of the ACM, 33(), June 10,

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

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

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

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

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

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

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

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 15-1 Περιεχόμενο

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

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

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

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

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

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

Κεφάλαιο 14. οµές Ευρετηρίων για Αρχεία. ιαφάνεια 14-1

Κεφάλαιο 14. οµές Ευρετηρίων για Αρχεία. ιαφάνεια 14-1 ιαφάνεια 14-1 Κεφάλαιο 14 οµές Ευρετηρίων για Αρχεία Copyright 2007 Ramez Elmasri and Shamkant B. NavatheΕλληνικήΈκδοση, ιαβλος, Επιµέλεια Μ.Χατζόπουλος 1 Θα µιλήσουµε για Τύποι Ταξινοµηµένων Ευρετηρίων

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

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό

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

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

Δομές Δεδομένων & Αλγόριθμοι Λίστες Λίστες - Απλά Συνδεδεμένες Λίστες - Διπλά Συνδεδεμένες Λίστες Είδη Γραμμικών Λιστών Σειριακή Λίστα Καταλαμβάνει συνεχόμενες θέσεις κύριας μνήμης Συνδεδεμένη Λίστα Οι κόμβοι βρίσκονται σε απομακρυσμένες

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

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

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

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

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

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

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

Φροντιςτήριο. Linked-List

Φροντιςτήριο. Linked-List Φροντιςτήριο Linked-List 1 Linked List Μια linked list είναι μια ακολουθία από ςυνδεδεμένουσ κόμβουσ Κάθε κόμβοσ περιέχει τουλάχιςτον Μια πληροφορία (ή ένα struct) Δείκτη ςτον επόμενο κόμβο τησ λίςτασ

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

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

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

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

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

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

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

4. Συνδεδεμένες Λίστες

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

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

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

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα ιοικητικής Επιστήµης & Τεχνολογίας ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Κεφάλαιο 9 οµές εδοµένων σε C Γιώργος Γιαγλής Περίληψη Κεφαλαίου 9 οµές εδοµένων υναµικές

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

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Άσκηση 1 Ο ζητούμενος ΑΤΔ μπορεί να υλοποιηθεί ως μια ακολουθία από στοιχεία τύπου window συνοδευόμενη από τις πράξεις: MakeNewWindow(L,w) Destroy(L,w) SwitchTo(L,w)

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 6: Διαχείριση Μνήμης & Δυναμικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυναμικές Δομές Δεδομένων Γενικά Δυναμική Δέσμευση/Αποδέσμευση Μνήμης Δομή τύπου structure

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

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

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

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

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

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

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

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ταξινοµηµένες Λίστες µε δυναµική δέσµευση µνήµης Αναδροµκές συναρτήσεις ΕΠΛ 12 Αρχές Προγραµµατισµού ΙΙ 1 Λίστες

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

Εργαστήριο 5: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Διπλά Συνδεδεμένη Λίστα

Εργαστήριο 5: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Διπλά Συνδεδεμένη Λίστα Εργαστήριο 5: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Διπλά Συνδεδεμένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διπλά Συνδεδεμένες Λίστες -Υλοποίηση Διπλά Συνδεδεμένης Λίστας με

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

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

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

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

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών ΛΙΣΤΕΣ Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα Υλοποίηση με δείκτες (pointers) Υλοποίηση με πίνακα Εφαρμογές και Χρήση Λιστών Λίστες (Lists) Δεδομένα

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

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

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

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

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

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

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