Data Structures and algorithm