Δυναμικοί τύποι δεδομένων ΙωάννηςΓºΤσούλος Δεκέμβριος ¾¼ Η ÂÚπεριέχειμιασειράαπόχρήσιμεςκατηγορίεςπουχρησιμοποιούνταιγια τηνδιαχείρισηδυναμικώνδεδομένων σταοποίαδενγνωρίζουμεεκτωνπροτέρων όχι μόνον την τιμή αλλά ούτε και το πλήθοςº Επειδή αυτές οι κατηγορίες δημιουργούνδυναμικέςδομέςαντικειμένωντουτύπου ÇØείναιχρήσιμοναεξετάσουμε πρώτατηνκατηγορίααυτήκαιστηνσυνέχειατιςδυναμικέςκατηγορίεςº ½ ÇØ Ηκατηγορία ÇØαποτελείτηνβάσηγιαόλεςτιςκατηγορίεςτηςγλώσσαςº Ολεςοικατηγορίεςπουυπάρχουνκληρονομούντιςβασικέςιδιότητεςαυτήςτης κατηγορίαςº Ηπιοκοινήμέθοδοςτηςκατηγορίαςείναιημέθοδος ÕÙ µτης οποίαςηχρήσηπαρουσιάζεταιστοναλγόριθμο ½º Ηκατηγορία ÁÒØÖείναιμια έμμεσηαναπαράστασηακεραίωναλλάσαναντικείμενακαιόχισαναπλοίτύποι δεδομένωνº Ομοιαμετηνκατηγορία ÁÒØÖυπάρχεικαιηκατηγορία ÓØγια τηναναπαράστασηδεκαδικώναριθμώνºσεπερίπτωσηπουδημιουργήσουμεκάποια δικήμαςκατηγορίαθαπρέπειναυπερκαλύψουμετηνμέθοδο ÕÙ µμεμιαδική μας όπωςπαρουσιάζεταικαιστοναλγόριθμο ¾º Μιαακόμαχρήσιμημέθοδος τηςκατηγορίαςείναιημέθοδος Ø µη οποίαμπορείναχρησιμοποιηθείσανέναςέμμεσοςδείκτηςπροςτηνκατηγορίαπου βρίσκεταιπίσωαπόένααντικείμενοº Εναπαράδειγμαχρήσεωςτηςμεθόδου το οποίουλοποιείτολεγόμενο ÖØÓÒµεμφανίζεταιστοναλγόριθμο º Σεαυτήν τηνπερίπτωσηβλέπουμεπωςμπορούμεκατάτονχρόνοεκτέλεσηςναλάβουμε σημαντικέςπληροφορίεςγιαένααντικείμενο όπωςτοόνοματηςκατηγορίαςτου τις μεθόδους που αυτό περιέχει κτλº Ητελευταίαχρήσιμημέθοδοςστααντικείμενα ÇØείναιημέθοδος ØÓËØÖÒ µ που χρησιμοποιείται προκειμένου να επιστρέψει με την μορφή αλφαριθμητικού πληροφορίαγιαένααντικείμενο όπωςγιαπαράδειγμαναεπιστρέψεισαναλφαριθμητικότιςσυντεταγμένεςενόςσημείουκτλº ¾ ÖÖÝÄ Ø Ηκατηγορία ÖÖÝÄ Øχρησιμοποιείταιπροκειμένουνααποθηκεύσουμεσεαυτήν δεδομέναδιαφόρωνειδώνταοποίαδενείναιγνωστάεκτωνπροτέρωνγιατοπλήθος ½
ÓÖØÑ ½ Εναπρώτοπαράδειγμαχρήσεως ÇØ ½ ÑÔÓÖØ ÚÜ º ÛÒ º ¾ ÔÙ ÇØ½ ÔÙ ØØ ÒØ ÖÁÒØ µ ÒØ Ü Ë Ø Ö Ò ÂÇÔØÓÒÈÒ º ÓÛÁÒÔÙØÓ ÒØÖ Ò Ø Ö µ ÜÁ Ò Ø Ö º Ô Ö Á Ò Ø µ ÖØÙÖÒ Ü ÔÙ ØØ ÚÓ ÑÒ Ë Ø Ö Ò Ö µ ½ Á Ò Ø Ö ÚÒÛ Á Ò Ø Ö ÖÁÒØ µ µ Á Ò Ø Ö Ú¾ÒÛ Á Ò Ø Ö ÖÁÒØ µ µ Ú½ º Õ Ù Ú¾ µ µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ËÑ Ò Ø Ö µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ÆÓØ Ñ Ò Ø Ö µ ¾¼ ¾½ ¾
ÓÖØÑ ¾Ηκατηγορία ÈÖ ÓÒº ½ ÈÖ ÓÒ ¾ ÔÖÚØ Ë Ø Ö Ò ÒÑ ØÒÑ ÔÙ ÈÖ ÓÒ Ë Ø Ö Ò Ü Ë Ø Ö Ò Ý µ ÒÑÜ ØÒÑÝ ÔÙ Ë Ø Ö Ò ØÆÑ µ ÖØÙÖÒ ÒÑ ½ ÔÙ Ë Ø Ö Ò ØÄ ØÒÑ µ ÖØÙÖÒ ØÒÑ ÔÙ ÓÓÒ Õ Ù ÈÖ ÓÒ ÓØÖ µ ÒÑ º Õ Ù ÓØÖ º ØÆÑ µ µ ²² ¾¼ ØÒÑ º Õ Ù ÓØÖ º ØÄ ØÒÑ µ µ µ ¾½ ÖØÙÖÒ ØÖÙ ¾¾ ÖØÙÖÒ ¾ ¾ ¾ ÔÙ ÇØ¾ ¾ ¾ ÔÙ ØØ ÚÓ ÑÒ Ë Ø Ö Ò Ö µ ¾ ¾ ÈÖ ÓÒ Ô½ ÒÛ ÈÖ ÓÒ ÒÒ Ì ÓÙÓ µ ¼ ÈÖ ÓÒ Ô¾ ÒÛ ÈÖ ÓÒ ÃÓ Ø ÒØÓÒÓÙ µ ½ Ô½ º Õ Ù Ô¾ µ µ ¾ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ËÑ ÔÖ ÓÒ µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ÆÓØ Ñ ÔÖ ÓÒ µ
ÓÖØÑ ÊØÓÒστην ÂÚº ½ ÑÔÓÖØ Ú º Ò º Ö Ø º ¾ ÈÖ ÓÒ ÔÖÚØ Ë Ø Ö Ò ÒÑ ØÒÑ ÔÙ ÈÖ ÓÒ Ë Ø Ö Ò Ü Ë Ø Ö Ò Ý µ ÒÑÜ ØÒÑÝ ÔÙ Ë Ø Ö Ò ØÆÑ µ ½ ÖØÙÖÒ ÒÑ ÔÙ Ë Ø Ö Ò ØÄ ØÒÑ µ ÖØÙÖÒ ØÒÑ ¾¼ ¾½ ÔÙ ÓÓÒ Õ Ù ÈÖ ÓÒ ÓØÖ µ ¾¾ ¾ ÒÑ º Õ Ù ÓØÖ º ØÆÑ µ µ ²² ¾ ØÒÑ º Õ Ù ÓØÖ º ØÄ ØÒÑ µ µ µ ¾ ÖØÙÖÒ ØÖÙ ¾ ÖØÙÖÒ ¾ ¾ ¾ ¼ ÔÙ ÇØ ½ ¾ ÔÙ ØØ ÚÓ ÑÒ Ë Ø Ö Ò Ö µ ÒØ ÈÖ ÓÒ Ô½ ÒÛ ÈÖ ÓÒ ÒÒ Ì ÓÙÓ µ Ë Ø Ö Ò Ô½ÒÑÔ½ º Ø µ º ØÆÑ µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ÒÑ Ô½ÒÑ µ ØÖÝ º ÓÖÆÑ Ô½ÒÑ µ ¼ ÅØÓ Ñ º ØÖÅØÓ µ ½ ÓÖ ¼ Ѻ ÒØ µ ¾ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ÅØÓ Ñ µ Ø ÜÔØÓÒ µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ÏÖÓÒ ÒÑ µ ¼
τουςº Εναπαράδειγμαχρήσεωςτηςκατηγορίαςπαρουσιάζεταιστοναλγόριθμο º Στοπαράδειγμααυτόδημιουργείταιμιαλίσταμεδύοακεραίουςσεαυτήν τον αριθμό καιτοναριθμό ¾¼º Ηπροσθήκηστοιχείωνστηνλίσταγίνεταιμετην χρήσητηςμεθόδου º Γιαναεξακριβώσουμετομέγεθοςτηςλίσταςκατάτην εκτέλεσητουπρογράμματοςχρησιμοποιούμετηνμέθοδο Þ µπουφυσικάστην συγκεκριμένηπερίπτωσηθαεπιστρέψει ¾ºΆλλεςχρήσιμεςμέθοδοιτηςκατηγορίας είναιοιεπόμενες ½º ÓÒØÒ ÇØ ܵΑυτήημέθοδοςεπιστρέφειαληθέςανηλίσταπεριέχει τοαντικείμενο Üκαιψευδέςσεδιαφορετικήπερίπτωσηº ¾º ÖÑÓÚ ÇØ ܵΑυτήημέθοδοςπροσπαθείναδιαγράψειτοαντικείμενο Üαπότηνλίσταº Σεπερίπτωσηεπιτυχίαςεπιστρέφειαληθές διαφορετικά ψευδέςº º ÑÔØÝ µημέθοδοςαυτήεπιστρέφειαληθέςανδενυπάρχεικανένα º Ø ÔÓ ØÓÒµΗμέθοδοςεπιστρέφειτοαντικείμενο ÇØπουείναιστην θέση ÔÓ ØÓÒº Οιθέσειςξεκινούναπότο ¼καισταματούνστο Þ µ¹½ όπωςακριβώςκαιστουςστατικούςπίνακεςº º Ö µημέθοδοςαυτήδιαγράφειόλαταστοιχείατηςλίσταςº º ÒÜÇ ÇØ ܵΗμέθοδοςαυτήεπιστρέφειτηνθέσητουαντικειμένου Üμέσαστηνλίσταº Οαλγόριθμος παρουσιάζειμιαακόμαπιοενδιαφέρουσαχρήσητης ÖÖÝÄ Ø όπουέχουμεταυτόχροναστηνίδιαλίσταακεραίουςαλλάκαιδεκαδικούςαριθμούςº Σύνολα Τασύνολαείναιμιαμικρήεπέκτασητωνλιστώνπουείδαμεπροηγουμένωςμε τηνπροσθήκηπωςδενεπιτρέπονταιδιπλέςεγγραφέςσεαυτάºδηλαδήανγια παράδειγμαέναςακέραιοςέχειήδηπροστεθείμεκάποιαμέθοδο µαυτόδεν μπορείναξαναγίνειº Τοπαράδειγμαστοναλγόριθμο υλοποιείδύοσύνολαακεραίωνκαιστηνσυνέχειαπαράγειένατρίτοσύνολοτοοποίοαποτελείτηνένωση τωνδύοπροηγουμένωνσυνόλωνº Σημειώστεπωςότανέναστοιχείουπάρχεισε ένασύνολοημέθοδος µδενθατοπροσθέσεικαιθαεπιστρέψειψευδέςº Στοίβες Μιαακόμαχρήσιμηδυναμικήδομήτης ÂÚείναιηστοίβαº Σεαυτήντηνδομή θεωρούμεπωςυπάρχειένασημείοστοοποίομπορούμενακάνουμεεισαγωγέςκαι εξαγωγέςº Αυτότοσημείοθεωρείταιηκορυφήτηςλίσταςκαιόλεςοιπράξεις γίνονταιμόνονεκείºείναιμιαδομήπουβρίσκεισημαντικέςχρήσειςσεδίκτυακαι μεταφραστέςº Εναπαράδειγμαχρήσηςτηςδομήςπαρουσιάζεταιστοναλγόριθμο
ÓÖØÑ Παράδειγμαχρήσεως ÖÖÝÄ Øº ½ ÑÔÓÖØ Ú º Ù Ø º ¾ ÔÙ ÖÖÝÄ Ø½ ÔÙ ØØ ÚÓ ÑÒ Ë Ø Ö Ò Ö µ ÖÖÝÄ Ø ØÒÛ ÖÖÝÄ Ø µ Ø º ½ ¼ µ Ø º ¾ ¼ µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò Ä Ø Þ Ø º Þ µ µ ÓÓÒ ÓÙÒ Ø º Ó Ò Ø Ò ¾ ¼ µ ÓÙÒ µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ¾¼ Ò Ø µ ½ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ¾¼ ÒÓØ Ò Ø Ø µ ÇØ Ü Ø º Ø ¼ µ ÇØ ܾ Ø º Ø ½ µ Ø º Ö µ όπουχρησιμοποιούμεμιαστοίβαγιαναμάθουμεανοιπαρενθέσειςσεένααλφαριθμητικόείναισωστάταιριασμένεςμεταξύτουςμετονεξήςτρόπο κάιθεφορά πουσυναντάμεμιααριστερήπαρένθεσηεισάγουμεέναναριθμόστηνστοίβακαι κάθεφοράπουσυναντάμεμιαδεξιάπαρένθεσηαφαιρούμετοναριθμόºγιαναείναι σωστήηέκφρασηωςπροςτιςπαρενθέσειςθαπρέπειστοτέλοςναμηνέχειμείνει κανέναστοιχείομέσαστηνστοίβαº Επαναλήπτες Μέχριστιγμήςέχουμεδειπωςγιαναδιατρέξουμεταστοιχείαμιαςλίσταςχρησιμοποιούμεμιαδομή ÓÖ ωστόσομπορούμεναχρησιμοποιήσουμεστηνθέσηαυτής τηςδομήςένανεπαναλήπτηºοιεπαναλήπτεςείναιμιαπιοαπλήστηνχρήσηδομή γιατηνανάκτησητωνστοιχείωντηςλίσταςκαιδενενδιαφέρονταιγιατομέγεθος τηςλίσταςκαιείναιαπλούστεροιστηνχρήση όπωςπαρουσιάζεταικαιστοναλγόριθμο ºΗμέθοδος ÆÜØ µελέγχειανυπάρχειεπόμενοστοιχείοστηνλίσταγια ναεπιστραφείκαιημέθοδος ÒÜØ µπροωθείτονεπαναλήπτηστοεπόμενοστοιχείο καιτοεπιστρέφειμετηνμορφή ÇØºΜιακαλύτερητεχνικήεπαναληπτώνείναι ηοεπαναλήπτης Ä ØÁØÖØÓÖπουπαρουσιάζεταιστοναλγόριθμο º
ÓÖØÑ Μιαλίσταμεδιαφορετικούςτύπουςδεδομένωνº ½ ÑÔÓÖØ Ú º Ù Ø º ¾ ÔÙ ÖÖÝÄ Ø¾ ÔÙ ØØ ÚÓ ÑÒ Ë Ø Ö Ò Ö µ ÒØ Á Ò Ø Ö Ò Ø ÒÛ Á Ò Ø Ö ½ ¼ µ Á Ò Ø Ö Ò Ø ¾ÒÛ Á Ò Ø Ö ¾ ¼ µ ÓØ ÒÛ ÓØ ½ ¼ º ¾ µ ÓØ ¾ÒÛ ÓØ º¾¾µ ÖÖÝÄ Ø ØÒÛ ÖÖÝÄ Ø µ Ø º Ò Ø ½ µ ½ Ø º ½ µ Ø º Ò Ø ¾ µ Ø º ¾ µ ÓÖ ¼ Ø º Þ µ µ ÇØ Ü Ø º Ø µ Ü º Ø µ º ØÆÑ µ º ¾¼ Õ Ù Ú º Ò º Á Ò Ø Ö µ µ ¾½ ¾¾ Á Ò Ø Ö ÜÜ Á Ò Ø Ö µ Ü ¾ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò Á Ò Ø Ö ÜÜ µ ¾ ¾ ¾ ¾ ÓØ ÝÝ ÓØ µ Ü ¾ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ÓØ ÝÝ µ ¾ ¼ ½ ¾
ÓÖØÑ Ενωσησυνόλωνº ½ ÑÔÓÖØ ÚÜ º ÛÒ º ¾ ÑÔÓÖØ Ú º Ù Ø º ÔÙ ËØ½ ÔÙ ØØ ÒØ ÖÁÒØ µ Ë Ø Ö Ò ÂÇÔØÓÒÈÒ º ÓÛÁÒÔÙØÓ ÒØÖ Ò Ø Ö µ ÒØ ÜÁ Ò Ø Ö º Ô Ö Á Ò Ø µ ÖØÙÖÒ Ü ½ ÔÙ ØØ ÚÓ Ô Ö Ò Ø Ë Ø À ËØ Ø µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø ËØ µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ø µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò Ò µ ¾¼ ÔÙ ØØ ÚÓ ÑÒ Ë Ø Ö Ò Ö µ ¾½ ¾¾ À ËØ ؽ ؾ Ø ¾ ÒØ ¾ Ò ÒØ ÑÜÆÙÑÖ ¾ ÊÒÓÑ ÖÒÒÛ ÊÒÓÑ µ ¾ Ø ÒÛ À ËØ µ ¾ Ø ¾ÒÛ À ËØ µ ¾ Ø ÒÛ À ËØ µ ¾ ¼ ÓÖ ¼ ÑÜÆÙÑÖ µ ½ ¾ Á Ò Ø Ö ÜÒÛ Á Ò Ø Ö ÖÁÒØ µ µ ÖÒ º ÒÜØÁÒØ µ±¾¼µ Ø ½ º Ü µ Ø ¾ º Ü µ Ø º Ü µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ËØ½ µ Ô Ö Ò Ø Ë Ø Ø ½ µ ¼ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ËØ¾ µ ½ Ô Ö Ò Ø Ë Ø Ø ¾ µ ¾ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ËØ µ Ô Ö Ò Ø Ë Ø Ø µ
ÓÖØÑ Χρήσηστοίβαςº ½ ÑÔÓÖØ ÚÜ º ÛÒ º ¾ ÑÔÓÖØ Ú º Ù Ø º ÔÙ ËØ½ ÔÙ ØØ ÚÓ ÑÒ Ë Ø Ö Ò Ö µ Ë Ø Ö Ò ÂÇÔØÓÒÈÒ º ÓÛÁÒÔÙØÓ ÒØÖ ÔÖ µ ËØ ÑÝ ØÒÛ ËØ µ ÒØ ÓÖ ¼ º ÒØ µ µ ½ Ö º ÖØ µ ³ ³ µ ÑÝ Ø º ÔÙ ÒÛ Á Ò Ø Ö ½ ¼ µ µ ³ µ ³ µ ÑÝ Ø º ÑÔØÝ µ µ ¾¼ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ËØ ÑÔØÝ µ ¾½ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò Ì ÔÖ ÒÓØ Ó µ ¾¾ ¾ ¾ ÑÝ Ø º ÔÓÔ µ ¾ ¾ ¾ ÑÝ Ø º ÑÔØÝ µ µ ¾ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò Ì ÔÖ Ó µ ¾ ¼ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò Ì ÔÖ ÒÓØ Ó µ ½ ¾
ÓÖØÑ Μιαπρώτηχρήσητωνεπαναληπτώνº ½ ÑÔÓÖØ Ú º Ù Ø º ¾ ÔÙ Á Ø Ö Ø Ó Ö ½ ÔÙ ØØ ÚÓ ÑÒ Ë Ø Ö Ò Ö µ Ò ÒØ Æ ÒØ ÖÖÝÄ Ø ØÒÛ ÖÖÝÄ Ø µ Á Ø Ö Ø Ó Ö Ø Ö ÊÒÓÑ ÖÒÒÛ ÊÒÓÑ µ ÓÖ ¼ Æ µ ½ Ø º ÖÒ º ÒÜØÁÒØ µ µ Ø Ö Ø º Ø Ö Ø Ó Ö µ Û Ø Ö º ÆÜØ µ µ Á Ò Ø Ö Ü Á Ò Ø Ö µ Ø Ö º ÒÜØ µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò Ü Ü µ ¾¼ ¾½
ÓÖØÑ Χρήσητου Ä ØÁØÖØÓÖ ½ ÑÔÓÖØ Ú º Ù Ø º ¾ ÔÙ Á Ø Ö Ø Ó Ö ¾ ÔÙ ØØ ÚÓ ÑÒ Ë Ø Ö Ò Ö µ ÖÖÝÄ Ø ØÒÛ ÖÖÝÄ Ø µ Ò ÒØ Æ ÒØ Ä Ø Á Ø Ö Ø Ó Ö Ø Ö ÒØ ÓÙÒØ ¼ ÊÒÓÑ ÖÒÒÛ ÊÒÓÑ µ ÓÖ ¼ Æ µ ½ Ø º ÖÒ º ÒÜØÁÒØ µ ±¼µ Ø Ö Ø º Ø Á Ø Ö Ø Ó Ö µ Û Ø Ö º ÆÜØ µ µ Á Ò Ø Ö Ü Á Ò Ø Ö µ Ø Ö º ÒÜØ µ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ÓÙÒØ ÓÙÒØ µ ¾¼ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ÑÒØ Ü µ ¾½ ÖÒ º ÒÜØÁÒØ µ ± ¾ ¼µ ¾¾ Ø Ö º Ø ÒÛ Á Ò Ø Ö ¼ µ µ ¾ ÓÙÒØ ¾ ¾ Û Ø Ö º ÈÖÚÓÙ µ µ ¾ ¾ Á Ò Ø Ö Ü Á Ò Ø Ö µ Ø Ö º Ô Ö Ú Ó Ù µ ¾ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ÓÙÒØ ÓÙÒØ µ ¾ ËÝ ØÑ º ÓÙØ º Ô Ö Ò Ø Ò ÑÒØ Ü µ ¼ ÓÙÒØ ½ ¾