Appropriate for a sophomore/junior level second course in data structures and algorithms analysis in departments of Computer Science. This book thoroughly covers key data structures at the undergraduate level. With a focus on how to assess costs and benefits, it teaches students how to create efficient data structures and algorithms and how to adopt to new design challenges. Students are taught how to assess applications needs to find data structures with matching capabilities.