Estructura de Datos en C (Schaum) – Luis Joyanes Aguilar, Ignacio Zahonero, Matilde Fernandez, Lucas Sanchez – 1ra Edición

Estructura de Datos en C (Schaum)

Por: / Ignacio Zahonero / Lucas Sánchez / Matilde Fernández

Descripción

Este libro se presenta como una guía fundamental para cualquier persona que desee dominar el diseño y la implementación de estructuras de datos utilizando el lenguaje de programación C. Lejos de ser un manual denso y complejo, esta obra, parte de la reconocida serie Schaum, es una herramienta esencial que te lleva desde los principios básicos de los arreglos y las listas enlazadas hasta el análisis de algoritmos más avanzados como los árboles y las tablas hash. La primera edición busca ser un recurso que conecte la teoría con la práctica, proporcionando una base sólida para estudiantes de ingeniería de software, ciencias de la computación o cualquier persona que busque mejorar sus habilidades de programación. Para un público joven, especialmente estudiantes universitarios, este libro es un recurso invaluable para entender que las estructuras de datos son el esqueleto de cualquier programa eficiente, y su dominio es crucial para la resolución de problemas complejos.

A lo largo de sus capítulos, el texto desglosa de manera metódica los grandes temas. Se comienza con una exploración de los fundamentos del lenguaje C que son relevantes para las estructuras de datos, incluyendo punteros, asignación de memoria dinámica y manejo de archivos. El libro profundiza en el estudio de las estructuras de datos lineales, como las listas enlazadas, las pilas y las colas, y se explican sus operaciones básicas y sus aplicaciones en la programación. Se abordan los desafíos de las estructuras de datos no lineales, como los árboles (binarios, de búsqueda, AVL, etc.) y los grafos, y se discuten los algoritmos de recorrido y búsqueda asociados a cada uno. La obra también se adentra en el tema de las tablas hash, un conocimiento crucial para el diseño de bases de datos y sistemas de búsqueda rápidos. Se ofrece un análisis de la eficiencia de los algoritmos en términos de tiempo y espacio, enseñándote a elegir la estructura de datos adecuada para un problema específico.

La obra es invaluable por su enfoque práctico y la gran cantidad de problemas resueltos y propuestos. Cada sección está acompañada de ejercicios que te invitan a poner en práctica los conceptos, lo que facilita la comprensión y la aplicación de las técnicas. El libro se convierte en una herramienta activa para el aprendizaje, donde se fomenta la resolución de problemas para consolidar la teoría. Se promueve el pensamiento crítico, animando a los estudiantes a no solo memorizar los procedimientos, sino a entender la lógica detrás de ellos y a tomar decisiones de diseño informadas. En definitiva, «Estructura de Datos en C» es un recurso que te capacita para no solo escribir código, sino para diseñar programas eficientes, escalables y elegantes.

Prólogo
Capítulo 1 Algoritmos, estructura de datos y programas
1.1 Resolución de problemas de programación
1.2 Abstracción de datos
1.3 Análisis de un problema
1.4 Diseño de un programa
1.5 Implementación (codificación) de un programa
1.6 Verificación
1.6.1 Método básico de verificación formal
1.6.2 descripción formal de tipos de datos
1.6.3 el lenguaje de la lógica de primer orden
Problemas resueltos básicos
Problemas resueltos avanzados
Problemas propuestos
Capítulo 2 Análisis de algoritmos
2.1 Medida de la eficiencia de un algoritmo
2.1.1 Evaluación de la memoria
2.1.2 Evaluación del tiempo
2.2 Notación O-GRANDE
2.2.1 Descripción de tiempos de ejecución
2.2.2 Definición conceptual
2.2.3 Definición formal
2.2.4 Propiedades de la notación O
2.2.5 Complejidad de las distintas sentencias y programas en C
2.2.6 Funciones de complejidad de algoritmos más comúnmente consideradas
2.2.7 Tabla comparativa de las distintas funciones de complejidad más usuales
2.2.8 Inconvenientes de la notación O-grande
Problemas básicos
Problemas avanzados
Problemas propuestos
Capítulo 3 Arrays o arreglos (listas y tablas), estructuras y uniones en C
3.1 Array unidimensional
3.2 Array multidimensionales
3.3 Array como parámetros a funciones
3.4 Estructuras
3.5 Uniones
3.6 Enumeraciones
3.7 Typedef
Problemas resueltos
Problemas avanzados
Problemas propuestos
Capítulo 4 Recursividad
4.1 Algoritmos recursivos
4.2 Casos en los que debe evitarse el uso de la recursividad
4.3 Recursividad directa e indirecta
4.4 Métodos para la resolución de problemas que usan recursividad
4.4.1 Divide y vence
4.4.2 Backtracking (retroceso)
Problemas básicos
Problemas avanzados
Problemas propuestos
Capítulo 5 Algoritmos de búsqueda y ordenación
5.1 Búsqueda
5.1.1 Búsqueda lineal
5.1.2 Búsqueda binaria
5.2 Clasificación interna
5.3 Ordenación por burbuja
5.4 Ordenación por selección
5.5 Ordenación por inserción
5.7 Métodos de ordenación por urnas
5.7.1 BinSort
5.7.2 RadixSort
5.8 Ordenación rápida (QuickSort)
5.9 Ordenación por mezcla
5.10 Clasificación por montículo
Problemas básicos
Problemas de seguimiento
Algoritmos avanzados
Problemas propuestos
Capítulo 6 Archivos y algoritmos de ordenación externa
6.1 Archivos en C.
6.2 Operaciones con archivos
6.3 Ordenación externa
6.4 Ordenación por mezcla directa
6.5 Ordenación por mezcla natural
6.6 Método de la mezcla equilibrada múltiple
6.7 Método polifásico
Problemas de seguimiento
Problemas básicos
Problemas avanzados
Problemas propuestos
Capítulo 7 Tipos abstractos de datos y objetos
7.1 El papel de la abstracción
7.2 El tipo abstracto de datos (TAD)
7.2.1 Especificaciones de tipos abstractos de datos
7.2.2 Implementación de tipos abstractos de datos
7.3 Orientación a objetos
Problemas resueltos básicos
Problemas avanzados
Problemas propuestos
Capítulo 8 Listas, listas enlazadas
8.1 Estructuras de datos dinámicas
8.2 Punteros (apuntadores)
8.3 Variables dinámicas
8.4 Tipos puntero predefinidos NULL y void
8.5 Conceptos generales sobre listas
8.6 Especificación del tipo abstracto de datos lista
8.7 Operaciones sobre listas enlazadas
8.8 Especificación formal del tipo abstracto de datos lista ordenada
8.9 Inserción y borrado de un elemento en lista enlazada simple
Problemas básicos
Problemas avanzados
Problemas propuestos
Capítulo 9 Modificaciones de listas enlazadas
9.1 Listas doblemente enlazadas
9.2 Inserción y borrado de un elemento en lista doblemente enlazada
9.3 Listas circulares simplemente enlazadas
9.4 Listas circulares doblemente enlazadas
Problemas básicos
Problemas avanzados
Problemas propuestos
Capítulo 10 Pilas y sus aplicaciones
10.1 El tipo abstracto de datos pila
10.2 Especificación del tipo abstracto de datos pila
10.3 Implementación mediante estructuras estáticas
10.4 Implementación mediante estructuras dinámicas
10.5 Transformación de expresiones aritméticas de notación infija a postfija
10.6 Evaluación de expresiones aritméticas
10.7 Eliminación de la recursividad
Problemas resueltos básicos
Problemas resueltos avanzados
Problemas propuestos
Capítulo 11 Colas, colas de prioridad y montículos
11.1 Colas
11.2 Especificación formal
11.3 Implementación con variables dinámicas
11.4 Colas circulares
11.5 Bicolas
11.6 Especificación formal de TAD bicola sin restricciones
11.7 Colas de prioridad
11.8 Especificación del tipo abstracto de datos cola de prioridad
11.9 Montículos
Problemas básicos
Problemas avanzados
Problemas propuestos
Capítulo 12 Tablas de dispersión y funciones hash
12.1 Tablas de dispersión
12.2 Funciones de transformación de clave
12.3 Tratamiento de sinónimos
Problemas básicos
Problemas avanzados
Problemas propuestos
Capítulo 13 Árboles, árboles binarios y árboles ordenados
13.1 Concepto de árbol
13.2 Árbol binario
13.2.1 Construcción de un árbol binario
13.2.2 Recorridos
13.3 Árboles binarios de expresiones
13.3.1 Construcción a partir de una expresión en notación convencional
13.4 Árboles binarios de búsqueda
Problemas básicos
Problemas avanzados
Problemas propuestos
Capítulo 14 Árboles binarios equilibrados
14.1. Árbol binario equilibrado, árboles AVL
14.2. Inserción en árboles AVL
14.3. Rotaciones en la inserción
14.4. La eliminación (o borrado en árboles AVL)
14.5. Rotaciones en la eliminación
Problemas de seguimiento
Problemas básicos
Problemas avanzados
Problemas propuestos
Capítulo 15 Árboles B
15.1 Árboles B
15.1.1 Búsqueda de una clave
15.1.2 Inserción de información
15.1.3 Borrado físico de un registro
15.2 Realización de un árbol B en memoria externa
15.3 Árboles B*
15.4 Árboles B+
Problemas de seguimiento
Problemas propuestos
Capítulo 16 Grafos I: representación y operaciones
16.1 Conceptos y definiciones
16.2 Representación de los grafos
16.3 Tipo Abstracto de Datos Grafo
16.4 Recorrido de un grafo
16.5 Componentes conexas
16.6 Componentes fuertemente conexas
Problemas resueltos básicos
Problemas resueltos básicos
Problemas propuestos
Capítulo 17 Grafos II: Algoritmos
17.1 Ordenación topológica
17.2 Matriz de caminos: Algoritmo de Warshall
17.3 Problema de los caminos más cortos con un sólo origen: algoritmo de Dijkstra
17.4 Problema de los caminos más cortos entre todos los pares de vertices: algoritmo de Floyd
17.5 Concepto de flujo. Algoritmo de Ford Fulkerson
17.6 Problema del arbol de expansión de coste mínimo
17.7 Algoritmo de Prim y algoritmo de Kruskal
Problemas resueltos básicos
Problemas básicos

Consulta los datos bibliográficos principales de esta edición para identificar correctamente el recurso, revisar su autoría y verificar detalles como ISBN, tema, subtema, archivo e idioma.

¿Qué piensas de este libro?

No hay comentarios
Avatar

Aún no hay comentarios

Sé el primero en compartir tu opinión sobre este contenido.

Escribir un comentario