Data Structures, Algorithms, and Software Principles in C