Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α22.8 · Λίστα για το BFS και λίστες κάθε τύπου

Διαλέξεις 21–22: Δέντρα, διαφάνεια 33 (διάλεξη 21: διαφάνεια 55) · Δυσκολία ★★☆ · short-answer · Κεφάλαια: 22, 21

Δίνεται η συνάρτηση που τυπώνει ένα δέντρο με διάσχιση κατά πλάτος (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)