Επιλογή Σελίδας

Έστω ότι πρέπει να γραφεί ένας αλγόριθμος που να δέχεται ως είσοδο το όνομα ενός συνδρομητή του ΟΤΕ και να δίνει ως έξοδο το τηλέφωνό του.

Πρώτη Λύση

Δομή Δεδομένων: Δημιουργείται μία ακολουθία (Ο1,Τ1), (Ο2,Τ2), …, (On,Τn), όπου οι μεταβλητές Οi και Τi αναφέρονται στο όνομα και στο τηλέφωνο του i-οστού συνδρομητή, για i = 1,2,…,n.
Αλγόριθμος: Η ακολουθία ανιχνεύεται μέχρι να βρεθεί το ζητούμενο όνομα του συνδρομητή Ok και εκτυπώνεται το τηλέφωνο Tk. Ο αλγόριθμος αυτός είναι αποδοτικός για συνδρομητές ενός χωριού ή μίας κωμόπολης, αλλά για συνδρομητές μίας μεγάλης πόλης είναι χρονοβόρος.

Δεύτερη Λύση
Δομή Δεδομένων: Χρησιμοποιείται και πάλι η ακολουθία της πρώτης λύσης, αλλά αυτή τη φορά οι συνδρομητές είναι ταξινομημένοι λεξικογραφικά. Επιπλέον δημιουργείται μία δεύτερη ακολουθία με τα στοιχεία (Α,n1), (Β,n2), …, (Ω,n24). Κάθε στοιχείο της δεύτερης αυτής ακολουθίας δίνει για κάθε γράμμα του αλφαβήτου τη θέση ni (για i = 1, 2, …, 24) στην πρώτη ακολουθία με το πρώτο όνομα συνδρομητή που αρχίζει από το γράμμα αυτό.
Αλγόριθμος: Αφήνεται για άσκηση στον μαθητή.

Προτεινόμενη: Αρχικά ανιχνεύεται το στοιχείο της 2ης ακολουθίας που αντιστοιχεί στο αρχικό γράμμα του συνδρομητή. Στη συνέχεια ανιχνεύεται η πρώτη ακολουθία, μέχρι να βρεθεί το ζητούμενο όνομα του συνδρομητή Ok, όπως στην πρώτη λύση, αλλά η ανίχνευση ξεκινά από τη θέση ni, όπου ξεκινούν οι συνδρομητές με αντίστοιχο αρχικό γράμμα. Κατόπιν εκτυπώνεται το τηλέφωνο Tk.

Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες: τις στατικές (static) και τις δυναμικές (dynamic). Οι δυναμικές δομές δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης αλλά στηρίζονται στην τεχνική της λεγόμενης δυναμικής παραχώρησης μνήμης (dynamic memory allocation). Με άλλα λόγια, οι δομές αυτές δεν έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους μεγαλώνει και μικραίνει καθώς στη δομή εισάγονται νέα δεδομένα ή διαγράφονται κάποια δεδομένα αντίστοιχα. Όλες οι σύγχρονες γλώσσες προγραμματισμού προσφέρουν τη δυνατότητα δυναμικής παραχώρησης μνήμης. Ωστόσο, εμείς στη συνέχεια θα εξετάσουμε μόνο τις στατικές δομές που είναι ευκολότερες στην κατανόηση και την υλοποίησή τους.

Share This