Δομές Δεδομένων (Data Structures) Γραμμικές Λίστες Βασικές Έννοιες Βασικές Έννοιες. Αναπαράσταση με τύπο και με δείκτη. Γραμμικές Λίστες. Βασικές Λειτουργίες.
Δομές Δεδομένων: Βασικές Έννοιες Αντικείμενο δεδομένων: Ένα σύνολο από στοιχεία/στιγμιότυπα ή τιμές Δομή Δεδομένων (ΔΔ): αντικείμενο δεδομένων (ΑΔ) (ή αφηρημένος τύπος δεδομένων, Abstract data type, ADT) και οι συσχετίσεις/λειτουργίες μεταξύ των ξεχωριστών στοιχείων του ΑΔ. Λειτουργίες σε ΔΔ: ορισμός-εισαγωγή δεδομένων, διαγραφή, αναζήτηση, τροποποίηση, ταξινόμηση, κλπ. Εφαρμογές των ΔΔ σε αλγόριθμους και προγράμματα.
Πίνακας (Array) Η πιο στοιχειώδης δομή δεδομένων. -- Java vector Η μνήμη ενός 32-bit υπολογιστή μπορεί να είναι μέχρι 232 1 λέξεις των 32-bit. Ένας πίνακας αποτελεί μία σταθερή συλλογή δεδομένων ίδιου τύπου τα οποία αποθηκεύονται ακολουθιακά σε κάποιο σημείο της μνήμης.
Η πιο στοιχειώδης δομή δεδομένων. Πίνακας (Array) Παράδειγμα: Η δήλωση int array [ 4 ] ; δεσμεύει ένα κομμάτι 4 ακεραίων. Μπορούμε να αναφερθούμε στο j-οστό στοιχείο του πίνακα array χρησιμοποιώντας για παράδειγμα: array [ j ] = 0;
Πίνακας (Array): Πλεονεκτήματα - Μειονεκτήματα Πλεονεκτήματα Προσπέλαση στοιχείου σε σταθερό χρόνο, O(1) Τυχαία προσπέλαση Μειονεκτήματα Σταθερό μέγεθος (εκτός από τους δυναμικούς πίνακες). Δεν μπορούμε να προσθέσουμε στοιχεία στη μέση ενός πίνακα. Αναδιάταξη στοιχείων μόνο με αντιγραφή.
Γραμμικές Λίστες (Linear Lists) Στόχος: Πρόσβαση σε μία συλλογή στοιχείων με τη σειρά (ακολουθιακά). Αποδοτική: αναδιάταξη στοιχείων, διαγραφή, προσθήκη, κ.τ.λ Ορισμός Γραμμικές λίστες (ΓΛ): ακολουθίες της μορφής (x 1, x 2, x 3,, x n ) όπου n είναι πεπερασμένος φυσικός αριθμός.
Γραμμικές Λίστες (Linear Lists) Λειτουργίες: Δημιουργία λίστας. Επιστροφή μήκους λίστας. Ένθεση κόμβου με στοιχείο e πριν/μετά από τον κόμβο m. Διαγραφή κόμβου πριν/μετά από τον κόμβο m. Αναζήτηση κόμβου με στοιχείο e.
Αναπαράσταση Δεδομένων Αναπαράσταση με βάση τον τύπο: χρησιμοποιεί μαθηματικό τύπο. Συνδεδεμένη αναπαράσταση (με δείκτη): δείκτης σε (αυθαίρετη) διεύθυνση της μνήμης. Έμμεση αναπαράσταση: πίνακας σε (αυθαίρετη) διεύθυνση της μνήμης.
Υλοποίηση ΓΛ: Με βάση τον τύπο Με βάση τον τύπο: χρησιμοποιεί μαθηματικό τύπο. Οι κόμβοι είναι στοιχεία ενός πίνακα: π.χ. Location(i) = i
Υλοποίηση ΓΛ: Συνδεδεμένη Αναπαράσταση Ορισμός: Μία συνδεδεμένη λίστα είναι ένα σύνολο στοιχείων όπου κάθε στοιχείο αποτελεί τμήμα ενός κόμβου (node) ο οποίος περιέχει επίσης ένα σύνδεσμο (link) προς κάποιον κόμβο.
Υλοποίηση ΓΛ: Συνδεδεμένη Αναπαράσταση Αντικείμενο (ΑΔΤ) αποθηκεύεται σε κόμβο με πληροφορία, elem, και δείκτη σε επόμενο, next. Μεταβλητή head: δείχνει το πρώτο στοιχείο - κεφαλή λίστας. Απαιτήσεις χώρου: Θ(n) θέσεις για δείκτες (pointers).
Υλοποίηση ΓΛ: Συνδεδεμένη Αναπαράσταση Συνδεδεμένη Αναπαράσταση: βασικές λειτουργίες.
Γραμμικής Λίστας: Ένθεση Χρόνος Θ(1) (με δεδομένη θέση εισαγωγής). Χρόνος Ο(m) για εύρεση m-οστού στοιχείου.
Γραμμικής Λίστας: Διαγραφή Χρόνος Θ(1) (με δεδομένη θέση διαγραφής). Χρόνος Ο(m) για εύρεση m-οστού στοιχείου.
Γραμμικές Λίστες Κυκλική (circular) ΓΛ: χωρίς τερματισμό. Διπλά συνδεδεμένη ΓΛ: περιέχει και σύνδεσμο προς το προηγούμενο στοιχείο της λίστας.
Βιβλιογραφία Δομές Δεδομένων, Αλγόριθμοι και Εφαρμογές στη C++, S. Sahni, Εκδόσεις Τζιόλα, 2004. Δομές Δεδομένων, Π. Μποζάνης, Εκδόσεις Τζιόλα 2006. Δομές Δεδομένων, Έννοιες, Τεχνικές και Αλγόριθμοι, Γ.Φ. Γεωργακόπουλος., Πανεπιστημιακές Εκδόσεις Κρήτης, Ηράκλειο 2002. Αλγόριθμοι σε C, Μέρη 1-4 (Θεμελιώδεις Έννοιες, Δομές Δεδομένων, Ταξινόμηση, Αναζήτηση), Robert Sedgewick, Τρίτη Αμερικάνικη Έκδοση, Εκδόσεις Κλειδάριθμός 2005. Εισαγωγή στους αλγορίθμους Τόμος Ι, T.H. Cormen, C.E. Leiserson, R.L. Rivest, Πανεπιστημιακές Εκδόσεις Κρήτης, Ηράκλειο 2006.