Data Structures and Program Design in C