Ασκήσεις

Άσκηση 5

  1. Να υλοποιηθεί σε C πρόγραμμα το οποίο με τη χρήση διατεταγμένου δυαδικού δένδρου διαβάζει από το χρήστη μια σειρά από ονόματα μέχρι να τελειώσει το αρχείο που διαβάζει (π.χ. ο χρήστης πληκτρολογήσει CTRL-Z) και τα εκτυπώνει με αλφαβητική σειρά. Παράδειγμα:
    Verdi
    Strauss
    Mozart
    Wagner
    Adams
    Gounod
    Bellini
    Gauss
    Bizet
    Donizetti
    Mascagni
    Puccini
    Rossini
    ^Z
    Adams
    Bellini
    Bizet
    Donizetti
    Gauss
    Gounod
    Mascagni
    Mozart
    Puccini
    Rossini
    Strauss
    Verdi
    Wagner
    
    Σημείωση 1: Η συνάρτηση strcmp συγκρίνει αλφαβητικά δύο συμβολοσειρές (α, β), και επιστρέφει ανάλογα -1 (α < β), 0 (α = β), ή 1 (α > β). Ορίζεται στην string.h.

    Σημείωση 2: Ανάγνωση των συμβολοσειρών μέχρι το τέλος του αρχείου, αντιγραφή τους σε χώρο που έχει επιστραφεί από τη malloc, και αποθήκευσή του δείκτη σε μεταβλητή p τύπου char * μπορεί να γίνει ως εξής:

    	char buff[80];
    
    	while (fgets(buff, sizeof(buff), stdin)) {
    		p = strdup(buff);
    		...
    	}
    
    Η δήλωση της strdup βρίσκεται στην επικεφαλίδα string.h.

    Σημείωση 3: Ο ορισμός των παρακάτω δύο συναρτήσεων μπορεί να σας βοηθήσει στη δομή του προγράμματος:

    static void add_tree(struct s_btree **t, char *name);
    static void print_tree(struct s_btree *t);