TADs, estructuras de datos y resolución de problemas con C++ - Nyhoff, Larry R. (Madrid : Pearson/Prentice Hall, 2005)
-- 1. Desarrollo de software -- 1.1 Análisis y especificación de problemas -- 1.2 Diseño -- 1.3 Codificación -- 1.4 Pruebas, ejecución y depuración -- 1.5 Mantenimiento -- Resumen -- Problemas de programación -- 2. Introducción a los tipos abstractos de datos -- 2.1 Una primera mirada a los TADs y sus implementaciones -- 2.2 Tipos de datos simples en C++ -- 2.3 Tipos de datos definidos por el programador -- 2.4 Punteros -- Resumen -- Problemas de programación -- 3. Estructura de datos y tipos abstractos de datos -- 3.1 Estructura de datos, tipos abstractos de datos e implementaciones -- 3.2 Vectores estáticos -- 3.3 Vectores multidimensionales (opcional) -- 3.4 Vectores dinámicos -- 3.5 Registros al estilo de C (opcional) -- 3.6 Programacion de procedimientos -- Resumen -- Problemas de programación -- -- 4. Mas sobre POO y TADs: clases -- 4.1 Programación con procedimientos frente a programación orientada a objetos -- 4.2 Clases -- 4.3 Ejemplo: una primera visión de una clase hora -- 4.4 Constructores de clases -- 4.5 Otras operaciones de clases -- Resumen -- Problemas de programación -- 5. Las clases estándar de C++ para entrada/salida y cadena de caracteres -- 5.1 Las clases estándar de C++ para entrada/salida y cadena de caracteres -- 5.2 Los tipos de cadenas de caracteres en C++ -- 5.3 Caso de estudio: edición de textos -- 5.4 Introducción al encaje de patrones (opcional) -- 5.5 introducción a la encriptación de datos (opcional) -- Resumen -- Problemas de programación -- 6. Listas -- 6.1 Las listas como TAD -- 6.2 Una implementación de listas basada en vectores estáticos -- 6.3 Una implementación de listas basada en vectores dinámicos -- 6.4 Introducción a las listas enlazadas -- 6.5 Una implementación de listas enlazadas basada en punteros en C++ -- 6.6 Una implementación de listas enlazadas basada en vectores (opcional) -- Resumen -- Problemas de programación -- 7. Pilas -- 7.1 Introducción a las pilas -- 7.2Diseño y construcción de una clase Píla basada en vectores -- 7.3 Pilas enlazadas -- 7.4 Uso de pilas en llamadas de función -- 7.5 Caso de estudio: notificación posfija (RPN) -- Resumen -- Problemas de programación -- 8. Colas -- 8.1 Introducción a las colas -- 8.2 Diseño y construcción de una clase cola basada en vectores -- 8.3 Colas enlazadas -- 8.4 Aplicaciones de las colas: buffers y planificación -- 8.5 Caso de estudio: Simulación de un centro de información -- Resumen -- Problemas de programación -- 9. Implementación de TADs: plantillas y contenedores estandar -- 9.1 Introducción: la evolución de la reusabilidad y la genericidad -- 9.2 Genericidad de funciones: sobrecarga y plantillas -- 9.3 Genericidad de clases: plantillas -- 9.4 El contenedor vector -- 9.5 Caso de estudio: contando las conexiones a un sistema informático -- 9.6 Vectores multidimensional (opcional) -- 9.7 Otros contenedores estándar: deque, stack y queue -- 9.8 bitsets y valarrays (opcional) -- Resumen -- Problemas de programación -- 10. Implementación de TADs: recursión, análisis de algoritmos y algoritmos estándar -- 10.1 Recursión -- 10.2 Ejemplos de recursión : Torres de Hanoi y análisis sintácticos -- 10.3 Implementación de la recursión -- 10.4 Eficacia de algoritmos -- 10.5 Algoritmos estándar en C++ -- 10.6 Demostración de la corrección de algoritmos (opcional) -- Resumen -- Problemas de programación -- 11. Más enlaces en las listas enlazadas -- 11.1 Algunas variantes de las listas enlazadas simples -- 11.2 Implementación con listas enlazadas de polinomios -- 11.3 Listas doblemente enlazadas y el contenedor estándar -- 11.4 Caso de estudio: aritmética de grandes números -- 11.5 Otras multiplemente enlazadas -- Resumen -- Problemas de programación -- 12. Búsqueda: arboles binarios y tablas dispersas -- 12.1 Repaso de las búsquedas lineal y binaria -- 12.2 Introducción a los árboles binarios -- 12.3 Los árboles binarios como estructura de datos recursiva -- 12.4 Árboles binarios de búsqueda -- 12.5 Caso de estudio: validación de accesos a una computadora -- 12.6 Árboles binarios de búsqueda hilvanados (opcional) -- 12.7 Tablas dispersas -- Resumen -- Problemas de programación -- 13. Ordenación -- 13.1 algunos esquemas de ordenación en O(n²) -- 13.2 Montículos, ordenación con montículo y colas con prioridad -- 13.3 Ordenación rápida -- 13.4 Ordenación por mezclas -- 13.5 Ordenación por radicales -- Resumen -- Problemas de programación -- 14. POO y TADs -- 14.1 Una breve visión general e histórica de la POO y los TADs -- 14.2 Herencia y diseño orientado a objetos -- 14.3 Construyendo clases derivadas -- 14.4 Caso de estudio: paga de nóminas -- 14.5 Polimorfismo, funciones virtuales y TADs -- 14.6 Caso de estudio: una estructura de datos heterogénea -- Resumen -- Problemas de programación -- 15. Árboles -- 15.1 Caso de estudio: códigos de Huffman -- 15.2 Árboles equilibrados: árboles AVL -- 15.3 Árboles 2-3-4, árboles rojinegros, B-árboles y otros árboles -- 15.4 contenedores asociativos en la STL: maps (opcional) -- Resumen -- Problemas de programación -- 16. Grafos y digrafos -- 16.1 Grafos dirigidos -- 16.2 Búsqueda y recorrido de digrafos -- 16.3 Grafos -- Resumen -- Problemas de programación -- Apéndices
Keywords: LENGUAJE C++; ESTRUCTURAS DE DATOS; RESOLUCIÓN DE PROBLEMAS; TIPOS DE DATOS ABSTRACTOS