data structures and algorithms through c in depth