#include #include #include #include "request_list.h" int main(int argc, char *argv[]) { rlist *el = rlist_create(10); for (int i = 1; i < argc + 1; i += 2) { request r = {argv[i], argv[i + 1]}; rlist_add(el, &r); } printf("--- VIA GET ---\n"); for (int i = 0; i < rlist_size(el); i++) { request r; rlist_get(el, i, &r); printf("%s %s\n", r.user, r.position); free(r.user); free(r.position); } printf("--- VIA ITERATOR ---\n"); rlist_iterator *i = rlist_start(el); while (!rlist_iterator_at_end(i)) { request r; rlist_iterator_get(i, &r); printf("%s %s\n", r.user, r.position); free(r.user); free(r.position); rlist_iterator_next(i); } rlist_iterator_destroy(i); // remove all items matching some criteria (user = "jrg" in this example) // O(n) for a linked list; O(n^2) for an array list printf("--- REMOVING jrg ---\n"); i = rlist_start(el); while (!rlist_iterator_at_end(i)) { request r; rlist_iterator_get(i, &r); if (strcmp(r.user, "jrg") == 0) { rlist_iterator_remove(i); } else { rlist_iterator_next(i); } free(r.user); free(r.position); } rlist_iterator_destroy(i); i = rlist_start(el); while (!rlist_iterator_at_end(i)) { request r; rlist_iterator_get(i, &r); printf("%s %s\n", r.user, r.position); free(r.user); free(r.position); rlist_iterator_next(i); } rlist_iterator_destroy(i); rlist_destroy(el); }