Τι θα τυπώσει το πρόγραμμα; (Η 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)