Programming concepts and datastructures in C