An Introduction to Data Structures and Algorithms (Progress in Computer Science and Applied Logic)