Practice for common data structures and algorithms using C