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

Α21.5 · Τι τυπώνει η find σε λίστα;

Διάλεξη 21, διαφάνειες 21–22 · Δυσκολία ★★☆ · trace · Κεφάλαια: 21

Τι θα τυπώσει το πρόγραμμα; (Η insert είναι η εισαγωγή στην αρχή της λίστας της διάλεξης.)

#include <stdio.h>
#include <stdlib.h>
typedef struct listnode {int value; struct listnode * next;} * List;
List find(List list, int value) {
  while(list && list->value != value) {
    list = list->next;
  }
  return list;
}
int main() {
  List list = NULL;
  insert(&list, 42); insert(&list, 43); insert(&list, 44);
  printf("Found 43: %x\n", find(list, 43));
  printf("Found 34: %x\n", find(list, 34));
  return 0;
}

Ποια η πολυπλοκότητα της find ως προς χρόνο και χώρο;

Υπόδειξη

Τι επιστρέφει η find όταν βρει την τιμή και τι όταν φτάσει στο τέλος της λίστας; Η μία από τις δύο γραμμές δεν μπορεί να προβλεφθεί ακριβώς: γιατί; Σκεφτείτε επίσης αν το %x είναι ο σωστός προσδιοριστής για δείκτη.

Αριθμός στον οδηγό: Α21.5 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec21-find-output · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec21-find-output.html · Markdown (GitHub)