Data Structures Algorithms and Software Principles in C