1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #include "generic_linked_list.h"
#include <stdio.h> // for printf
int main(void) {
List list = List_make();
int i1 = 123, i2 = 456, i3 = 789, i4 = 321, i5 = 654, i6 = 987;
// add + get
list.add(&list, &i1);
list.add(&list, &i2);
list.add(&list, &i3);
printf("%d\n", *(int*) list.get(&list, 0));
printf("%d\n", *(int*) list.get(&list, 1));
printf("%d\n", *(int*) list.get(&list, 2));
// update + get
list.update(&list, 0, &i4);
list.update(&list, 1, &i5);
list.update(&list, 2, &i6);
printf("%d\n", *(int*) list.get(&list, 0));
printf("%d\n", *(int*) list.get(&list, 1));
printf("%d\n", *(int*) list.get(&list, 2));
// remove + size
list.remove(&list, 3); // tried with 0, 1, 2, 3
printf("%d\n", list.size(&list));
// removeAll + size
list.removeAll(&list);
printf("%d\n", list.size(&list));
// Iterator
printf("\n\nIterate: \n");
list.add(&list, &i1);
list.add(&list, &i2);
list.add(&list, &i3);
// Iterator loop pattern
for (Iterator* it = list.iterator(&list); it != NULL; it = it->next(it)) {
printf("%d\n", *(int*) it->get(it));
}
// Iterator loop with remove pattern
Iterator* ite = list.iterator(&list);
while (ite != NULL) {
int* element = (int*) ite->get(ite);
// You can free() element if you have instanciated it with malloc()
if (*element == 456) {
ite = ite->removeAndNext(ite);
} else {
ite = ite->next(ite);
}
}
printf("\n");
for (Iterator* it = list.iterator(&list); it != NULL; it = it->next(it)) {
printf("%d\n", *(int*) it->get(it));
}
return 0;
} |
Partager