An Introduction to Data Structures and Algorithms