Σε προηγούμενο άρθρο έχει αναφερθεί ο ορισμός του αλγορίθμου, ένας πολύ βασικός ορισμός για την πληροφορική. Ένας εξίσου σημαντικός ορισμός που συνδέεται με την έννοια του αλγορίθμου είναι οι δομές δεδομένων (data structures). Ενώ ένας αλγόριθμος είναι υπεύθυνος για την επίλυση ενός προβλήματος, μία δομή δεδομένων είναι υπεύθυνη για την αποθήκευση, την προσπέλαση και την επεξεργασία των δεδομένων. Μαζί ένας αλγόριθμος και μία δομή δεδομένων συνθέτουν ένα πρόγραμμα.
Ένα απλό παράδειγμα Δομής Δεδομένων
Ως παράδειγμα ας φανταστούμε την ταξινόμηση ακεραίων αριθμών. Τα δεδομένα του προβλήματος είναι οι ακέραιοι αριθμοί και η ενέργεια που θα πρέπει να γίνει στα δεδομένα είναι η ταξινόμηση. Για να διατηρηθούν τα δεδομένα σε ένα πρόγραμμα είναι σημαντικό να αποθηκευθούν. Η πιο απλή δομή δεδομένων που επιτρέπει αποθήκευση γρήγορη προσπέλαση των στοιχείων της είναι ο πίνακας. Οι ακέραιοι αριθμοί τοποθετούνται σε διαδοχικά κελιά του πίνακα και ένας αριθμοδείκτης δεικνύει την θέση των στοιχείων μέσα στον πίνακα. Αφού τα δεδομένα πλέον είναι διαθέσιμα για μελλοντικούς υπολογισμούς, κάποιος αλγόριθμος μπορεί να τα χρησιμοποιήσει για να πετύχει τον στόχο του (δλδ. την ταξινόμηση). Επομένως, η δομή δεδομένων μαζί με τον αλγόριθμο ταξινόμησης συνθέτουν το τελικό πρόγραμμα της ταξινόμησης ακέραιων αριθμών.
Πέρα από την αποθήκευση
Εκτός από την αποθήκευση των στοιχείων ενός προγράμματος, οι δομές δεδομένων παρέχουν και λειτουργίες για την προσπέλαση και την επεξεργασία τους. Στο προηγούμενο παράδειγμα, ο πίνακας παρέχει έναν άμεσο τρόπο για την προσπέλαση του ι-οστού στοιχείου μέσα σε αυτόν. Ένα άλλο παράδειγμα είναι η ουρά όπου παρέχει μία βασική λειτουργία για την προσπέλαση των στοιχείων. Πάντα το στοιχείο που εισάγεται πρώτο στην ουρά εξάγεται πρώτο από αυτήν. Αντίθετα στην στοίβα τα στοιχεία που εισέρχονται πρώτα εξάγονται τελευταία. Άλλες δομές δεδομένων επιτρέπουν την ταξινόμηση των στοιχείων τους κατά την εισαγωγή τους μέσα στις δομές. Για παράδειγμα τα δυαδικά δένδρα αναζήτησης. Σε ένα δυαδικό δένδρο αναζήτησης τα μικρότερα στοιχεία βρίσκονται από την μία μεριά του γονέα τους και τα μεγαλύτερα από την άλλη. Σύμφωνα με την παρακάτω εικόνα, το 3 αφού είναι μικρότερο του 5 θα είναι το αριστερό παιδί του και το 7 που είναι μεγαλύτερο από το 5 θα είναι το δεξί παιδί του. Το 2 αφού είναι μικρότερο από το 5 άρα πρέπει να βρίσκεται αριστερά από αυτό και επειδή είναι μικρότερο και από το 3 θα είναι το αριστερό παιδί του.
Βασικές Λειτουργίες στις Δομές Δεδομένων
- Προσπέλαση (access): πρόσβαση σε ένα στοιχείο της δομής ώστε να εξετασθεί ή/και να τροποποιηθεί
- Εισαγωγή (insertion): προσθήκη ενός νέου στοιχείου.
- Διαγραφή (deletion): διαγραφή κάποιου στοιχείου.
- Αναζήτηση (searching): αναζήτηση κάποιου στοιχείου.
- Ταξινόμηση (sorting): δημιουργία διάταξης για τα στοιχεία της δομής δεδομένων.
- Αντιγραφή (copying): διαδικασία κατά την οποία όλα τα στοιχεία από την μία δομή αποθηκεύονται σε άλλη.
- Συγχώνευση (merging): διαδικασία όπου δύο οι παραπάνω δομές συγχωνεύονται.
- Διαχωρισμός (seperation): αντίστροφη διαδικασία της συγχώνευσης.