data structures algorithms and applications in c