data structure and algorithm practice