The basic layout is as follows: First, define a struct ArrayList (use a typedef) that stores a pointer to a block of memory representing the array of int, and also store the size and capacity. Then you can write functions: size_ArrayList, isEmpty_ArrayList, add_ArrayList, clear_ArrayList, get_ArrayList, toArray_ArrayList, and free_ArrayList.
Finally, provide a test program that reads an array and then sorts it. To sort it, use qsort on the underlying array returned by toArray_ArrayList.