3.18k likes | 3.35k Views
SOCS. Hoofdstuk 1 Computerarchitectuur. C. Overzicht. Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren Dynamische geheugenallocatie Lineaire Lijsten Lineaire Lijsten met dubbele bindingen Complexere gegevensstructuren. struct lijstelem { int info;
E N D
SOCS Hoofdstuk 1 Computerarchitectuur
C Overzicht • Eenvoudig C • Arrays • Functies • Records • Dynamische gegevenstructuren • Dynamische geheugenallocatie • Lineaire Lijsten • Lineaire Lijsten met dubbele bindingen • Complexere gegevensstructuren
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l; main() { l = alloc(2); l -> info = 0; l -> volgend = alloc(2); l -> volgend -> info = 4; l -> volgend -> volgend = alloc (2); l = NULL; } info struct lijstelem volgend C Dynamische geheugenallocatie Dynamischegeheugenallocatie NULL = nulwijzer
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l; main() { l = alloc(2); l -> info = 0; l -> volgend = alloc(2); l -> volgend -> info = 4; l -> volgend -> volgend = alloc (2); l = NULL; } info volgend l ? C Dynamische geheugenallocatie
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l; main() { l = alloc(2); l -> info = 0; l -> volgend = alloc(2); l -> volgend -> info = 4; l -> volgend -> volgend = alloc (2); l = NULL; } info volgend l ? ? C Dynamische geheugenallocatie
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l; main() { l = alloc(2); l -> info = 0; l -> volgend = alloc(2); l -> volgend -> info = 4; l -> volgend -> volgend = alloc (2); l = NULL; } info volgend l 0 ? C Dynamische geheugenallocatie
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l; main() { l = alloc(2); l -> info = 0; l -> volgend = alloc(2); l -> volgend -> info = 4; l -> volgend -> volgend = alloc (2); l = NULL; } info volgend l 0 ? ? C Dynamische geheugenallocatie
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l; main() { l = alloc(2); l -> info = 0; l -> volgend = alloc(2); l -> volgend -> info = 4; l -> volgend -> volgend = alloc (2); l = NULL; } info volgend l 0 4 ? C Dynamische geheugenallocatie
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l; main() { l = alloc(2); l -> info = 0; l -> volgend = alloc(2); l -> volgend -> info = 4; l -> volgend -> volgend = alloc (2); l = NULL; } info volgend l 0 4 ? ? C Dynamische geheugenallocatie
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l; main() { l = alloc(2); l -> info = 0; l -> volgend = alloc(2); l -> volgend -> info = 4; l -> volgend -> volgend = alloc (2); l = NULL; } info volgend l NULL 0 4 ? ? C Dynamische geheugenallocatie
C Dynamische geheugenallocatie Heap • Geheugenzone waarin dynamische geg.structuren kunnen gealloceerd worden • Vgl. Java: n = new Name(...); • Recuperatie van niet meer bereikbare geheugencellen = Garbage Collection
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i ? rl l ? ? Invoer 0 13 7 12 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i ? rl l ? ? Invoer 0 13 7 12 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i ? rl l Invoer 0 13 7 12 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 12 rl l Invoer 0 13 7 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 12 rl l Invoer 0 13 7 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 12 rl l Invoer 0 13 7 12 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 12 rl l Invoer 0 13 7 12 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 12 rl l Invoer 0 13 7 12 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 7 rl l Invoer 0 13 12 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 7 rl l Invoer 0 13 12 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 7 rl l Invoer 0 13 12 7 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 7 rl l Invoer 0 13 12 7 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 7 rl l Invoer 0 13 12 7 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 13 rl l Invoer 0 12 7 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 13 rl l Invoer 0 12 7 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 13 rl l Invoer 0 12 7 13 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 13 rl l Invoer 0 12 7 13 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 13 rl l Invoer 0 12 7 13 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 0 rl l Invoer 12 7 13 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 0 rl l Invoer 12 7 13 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = alloc(2); rl = l; i = getint(); while (i > 0) { rl -> info = i; rl -> volgend = alloc(2); rl = rl -> volgend; i = getint(); } rl -> info = 0; rl -> volgend = NULL; } info volgend i 0 rl l Invoer 12 7 13 0 NULL C Lineaire Lijsten
l 12 7 13 0 NULL C Lineaire Lijsten Staartelement
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i ? rl l ? ? Invoer 0 13 7 12 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i ? rl l ? ? Invoer 0 13 7 12 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i ? rl l ? ? Invoer 0 13 7 12 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 12 rl l NULL ? Invoer 0 13 7 C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 12 rl l NULL Invoer 0 13 7 ? ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 12 rl l NULL Invoer 0 13 7 12 ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 12 rl l NULL Invoer 0 13 7 12 NULL C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 12 rl l Invoer 0 13 7 12 NULL C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 7 rl l Invoer 0 13 12 NULL C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 7 rl l Invoer 0 13 12 ? NULL ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 7 rl l Invoer 0 13 12 7 NULL ? C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 7 rl l Invoer 0 13 12 7 NULL C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 7 rl l Invoer 0 13 12 7 NULL C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 13 rl l Invoer 0 12 7 NULL C Lineaire Lijsten
struct lijstelem { int info; struct lijstelem * volgend; }; struct lijstelem *l, *rl; int i; main() { l = NULL; i = getint(); while (i > 0) { rl = alloc(2); rl -> info = i; rl -> volgend = l; l = rl; i = getint(); } } info volgend i 13 rl l Invoer 0 12 7 ? ? NULL C Lineaire Lijsten