El objetivo de este manual es proporcionar una introducción práctica a las estructuras de datos y algoritmos desde el punto de vista del pensamiento abstracto y de la resolución de problemas. Se han intentado cubrir todos los detalles importantes relacionados con las estructuras de datos, sus análisis y sus implementaciones Java. El texto proporciona el necesario rigor matemático para los cursos sobre Estructuras de datos que enfatizan la teoría y para los cursos posteriores que requieren un mayor grado de análisis. Sin embargo, este material destaca del texto principal en forma de teoremas separados y, en algunos casos, secciones o subsecciones separadas. Dirigido a la asignatura de Estructura de datos en 2º curso de grados de Informática.