There's a an error in one of examples:
List(int*) mylist = NULL; // NULL represents the empty list.
int a=1, b=2;
list_append(l, &a);
What's lower case L?