Δίνεται η συνάρτηση που τυπώνει ένα δέντρο με διάσχιση κατά πλάτος (BFS):
void bfs(Tree t) {
List worklist = NULL;
Tree tmp;
insert(&worklist, t);
while(worklist) {
tmp = pop_last(&worklist);
printf("%d ", tmp->value);
if (tmp->left) insert(&worklist, tmp->left);
if (tmp->right) insert(&worklist, tmp->right);
}
}
Σημείωση: Ο τύπος List παραπάνω δεν περιέχει πλέον ακεραίους. Τι περιέχει; Πως θα έπρεπε να αλλάξει προκειμένου να υποστηρίξει μια τέτοια υλοποίηση; Τι θα κάνατε ώστε οι λίστες σας να δουλεύουν με κάθε τύπου δεδομένα;
Κοιτάξτε τον τύπο του δεύτερου ορίσματος της insert και της τιμής που επιστρέφει η pop_last. Για το τελευταίο ερώτημα, σκεφτείτε έναν τύπο δείκτη της C που μπορεί να δείχνει σε δεδομένα οποιουδήποτε τύπου, και διαβάστε για τους αφηρημένους τύπους δεδομένων (ΑΤΔ).
Αριθμός στον οδηγό: Α22.8
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: slides-lec22-generic-list ·
Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec22-generic-list.html ·
Markdown (GitHub)