Envíos gratis en compras superiores a $100.000
Inicio/Novedades, Profesional, Programación, Tecnología/El gran libro de programación en C

El gran libro de programación en C

$80.900

  • Envío gratis en compras superiores a $100.000
  • Autores: Alfons González Pérez
    Edición: 1
    Año: 2025
    Editorial: Marcombo
    Encuadernación: Rústica
    Medida: 15 x 22 cm
    Páginas: 550
    Lomo: 25 mm
    Peso: 1285 gr

    Hasta 12 pagos sin tarjeta con Mercado Pago. Saber más
    Compra con Mercado Pago sin tarjeta y paga mes a mes
    1
    Agrega tu producto al carrito y al momento de pagar, elige “Cuotas sin Tarjeta” o “Meses sin Tarjeta”.
    2
    Inicia sesión en Mercado Pago.
    3
    Elige la cantidad de pagos que se adapten mejor a ti ¡y listo!

    Crédito sujeto a aprobación.

    ¿Tienes dudas? Consulta nuestra Ayuda.

    SKU: 9786075763927 Categorías: , , ,

    Descripción

    ¿Se ha preguntado en qué lenguaje están programados los sistemas que gobiernan nuestra tecnología moderna?

    Tiene a su alcance la puerta de entrada a uno de los lenguajes más poderosos y versátiles del mundo de la programación, el lenguaje C. Si quiere descubrir el potencial de este lenguaje desde un nivel inicial, ha llegado al libro indicado.

    El lenguaje C llega a todo tipo de ámbitos, pues es compatible con los sistemas operativos más populares, como Linux y Windows, con los videojuegos, los índices del buscador de Google, las aplicaciones complejas en el ámbito de la física cuántica y la aeronáutica (como Dassault, Lockheed-Martin Aero), los sistemas de telecomunicaciones de Nokia, Alcatel, T-Mobile, Ericsson e incluso con los modelos financieros como Bloomberg y Morgan Stanley.

    Escrita con un enfoque práctico y una orientación maker, esta guía le permitirá sumergirse en el desarrollo real desde el primer momento. Con ejemplos descargables y aplicaciones en tecnologías avanzadas como Blockchain, sistemas embebidos y más, tendrá las herramientas necesarias para aprender con la práctica, el método más efectivo para dominar el arte de la programación.
    Aprender C no es solo un paso fundamental para cualquier programador, sino que es la clave para comprender los lenguajes que forman la base de las innovaciones tecnológicas actuales y futuras. Con este libro, descubrirá los secretos de un lenguaje que ha sido esencial en el desarrollo de sistemas y aplicaciones críticas durante décadas.

    Prepárese para explorar el lenguaje que impulsa la tecnología que emplea cada día. ¡Aprenda C y forme parte del presente y del futuro de la programación!

    CONTENIDO
    Prefacio

    CAPÍTULO 1
    Instalando un entorno de desarrollo para el libro
    1.1. ¿Qué es un entorno de desarrollo?
    1.1.1. ¿Qué es un entorno de desarrollo?
    1.1.2. ¿Qué nos proporciona un entorno de desarrollo?
    1.1.3. Compiladores de C/C++
    1.1.4. Herramientas de virtualización
    1.1.4.1. Configuración del networking entre sistemas virtuales y físicos
    1.1.5. Escoger herramientas para cada lector
    1.1.6. La herramienta de Visual Studio Code
    1.2. Instalación del entorno de desarrollo aconsejado
    1.2.1. Orden de instalación de los elementos de entorno de desarrollo
    1.2.2. Paso 1: descargar los ejemplos de código fuente del libro
    1.2.3. Paso 2: instalar el compilador MinGW
    1.2.3.1. Comprobar que MinGW está bien instalado
    1.2.4. Paso 3: instalar Visual Studio Code (VSCode)
    1.2.4.1. Acoplando los plugins a VSCode
    1.2.5. Comprobando el funcionamiento de VSCode
    1.2.6. Paso 4: instalar VirtualBox
    1.2.7. Paso 5: obtener una versión de Ubuntu Linux
    1.2.7.1. Comprobar que funciona la máquina virtual Linux
    1.2.8. Paso 6: instalar Eclipse
    1.2.9. Paso 7: instalando Visual Studio 2022 Community Edition
    1.3. Conclusión del capítulo 1

    CAPÍTULO 2
    Nuestro primer programa en lenguaje C
    2.1. HolaMundo: nuestro primer programa en C
    2.1.1. Las librerías de include
    2.1.2. Sumario de la función main
    2.1.3. La función printf
    2.1.4. ¿Qué cambios tenemos en este nuevo código fuente?
    2.1.5. Cómo imprimir los parámetros de línea de comando
    2.1.5.1. ¿Qué novedades vemos?
    2.1.5.2. ¿Qué es el código spaghetti?
    2.1.6. Depurar programas en C
    2.1.7. En depuración, ¿qué significa un breakpoint?
    2.1.8. ¿Cómo se pone en marcha la depuración (debugging)?
    2.1.9. ¿Cómo se configura la depuración en VSCode?
    2.1.9.1. Arrancando el modo depuración
    2.1.10. La barra de herramientas de debug
    2.1.11. La configuración de ventanas del modo debug
    2.1.12. Cambios en el punto del breakpoint
    2.1.13. Cómo enviar argumentos de línea de comando al depurar
    2.1.14. En el próximo capítulo

    CAPÍTULO 3
    Variables alfanuméricas
    3.1. Tipos de datos alfanuméricos
    3.1.1. El tipo de variable char
    3.1.2. Cadenas de caracteres y sus punteros
    3.1.2.1. Errores típicos y catastróficos con las cadenas de texto
    3.1.2.2. Cómo inicializar cadenas de texto
    3.1.2.3. ¿Qué novedades tenemos en este programa?
    3.1.2.4. Un programa para pasar de mayúsculas a minúsculas
    3.1.2.5. Una página de códigos equivale a ¡una margarita!
    3.1.2.6. Las impresoras de margarita y las páginas de códigos
    3.1.2.7. Trabajar con caracteres en chino con UTF-16
    3.1.3. Idiomas y culturas: el ejemplo chino
    3.1.4. Representar pictogramas con caracteres occidentales
    3.1.4.1. La escritura Wade-Giles
    3.1.4.2. El sistema de escritura Pinyin
    3.1.5. Ventajas del sistema de pictogramas
    3.1.6. El área CJKV
    3.1.6.1. La escritura en Japón
    3.1.6.2. La escritura en Corea
    3.1.6.3. La escritura en Vietnam
    3.1.6.4. Las diásporas históricas desde Asia
    3.1.7. La simplificación o reforma de los caracteres chinos
    3.1.8. Y llegó la tecnología Unicode con los 32 bits
    3.1.8.1. Diferencias prácticas con Unicode entre chino simplificado y chino tradicional
    3.1.9. Culturas y programación informática
    3.1.10. ¿En qué año vives?
    3.1.11. La función setlocale
    3.1.11.1. Conversión de UTF-16 a UTF-8
    3.1.11.2. Llegaron las cadenas de caracteres Unicode
    3.1.11.3. Recapitulando sobre los punteros a caracteres
    3.1.11.4. Stack y heap, ¿dónde guardamos nuestras variables?
    3.1.11.5. Pilas contra montones
    3.1.12. ¿Veis cómo los montones son mejores?
    3.1.12.1. Cómo declarar, inicializar y asignar cadenas de caracteres dinámicas
    3.1.12.2. Dos formas de recorrer una cadena de texto
    3.1.12.3. Función de búsqueda de texto mediante puntero-cursor
    3.1.13. Stack y heap: funciones y procesadores

    CAPÍTULO 4
    Tipos de datos numéricos. Coma flotante y binarios
    4.1. Los tipos básicos numéricos
    4.1.1. Enteros, punteros a enteros y copias de enteros
    4.1.1.1. Límites de cálculo de los números enteros de diferentes formatos
    4.1.1.2. El tipo numérico entero sin signo
    4.1.1.3. Anécdota de un regulador de velocidad. ¿Con signo o sin signo?
    4.1.2. Modificadores

    4.1.2.1. El modificador unsigned
    4.1.2.2. El modificador const
    4.1.2.3. El modificador constexpr
    4.1.2.4. El modificador static
    4.1.3. El tipo float y los números decimales
    4.1.3.1. Coma fija y coma flotante
    4.1.3.2. Estructura de un coma flotante en memoria
    4.1.4. El tipo long double o doble precisión
    4.1.5. El tipo long double o cuádruple precisión
    4.1.6. Anécdota histórica: fallo en el cálculo de coma flotante del Pentium de Intel
    4.1.7. Tipos numéricos máscara binaria: BYTE, WORD y DWORD
    4.1.7.1. El sistema binario de numeración
    4.1.7.2. Conversiones a hexadecimal
    4.1.7.3. Álgebra de Bool para números binarios
    4.1.8. La operación NOT
    4.1.9. La operación OR
    4.1.10. La operación NOR
    4.1.11. La operación AND
    4.1.12. La operación NAND
    4.1.13. La operación XOR
    4.1.14. Aplicación de puertas XOR y AND para un semisumador de 1 bit
    4.1.14.1. La operación de desplazamiento SHL (multiplicación por 2)
    4.1.14.2. La operación de desplazamiento SHR (división por 2)
    4.1.15. Transformación de puertas OR en puertas AND y viceversa
    4.1.15.1. Puerta NOR construida con transistores
    4.1.15.2. Puerta AND construida con transistores
    4.1.16. La tecnología TTL y cómo esto nos influyó desde los años 60
    4.1.17. Orden Endian de los bytes
    4.1.17.1. Endianidad en el procesador
    4.1.18. Cómo dividir un WORD en byte alto y byte bajo
    4.1.19. La resta, el signo y el complemento a 1
    4.1.19.1. Investigando cómo se hace la resta
    4.1.20. El complemento a 1
    4.1.21. Operadores de máscara de bits en C
    4.1.22. Función en C para hallar el complemento a 1
    4.1.22.1. El programa de resta binaria con máscaras binarias en lenguaje C
    4.1.23. La directiva asm y las máscaras binarias
    4.1.23.1. La arquitectura escalada de Intel y su influencia en los sistemas operativos
    4.1.23.2. Memoria y multitarea mejoradas

    CAPÍTULO 5
    Structs, unions y typedefs
    5.1. El tipo de dato struct y su complementario union
    5.1.1. Ejemplo básico de un struct
    5.1.2. Ejemplo de creación de un nuevo tipo de dato con typedef struct
    5.1.3. Ejemplo de ordenación de una matriz de clientes
    5.1.3.1. Ahora, ¿qué vamos a hacer con esta matriz de 10 clientes?
    5.1.3.2. ¿Cómo queda la función de ordenación?
    5.1.3.3. Función de liberación de cadenas de texto
    5.1.3.4. Función de impresión de listado
    5.1.3.5. El cuerpo de programa principal
    5.1.4. Ejemplo de struct y unión: un emulador de 2 procesadores a la vez
    5.1.4.1. ¡Que vuelven los indios!
    5.1.4.2. La instrucción MOV en ensamblador
    5.1.4.3. Codificando MOV en lenguaje máquina
    5.1.4.4. Simulando un MOV paso a paso
    5.1.4.5. ¿Qué hemos conseguido?
    5.1.4.6. El programa de prueba de structs y unions
    5.1.4.7. La tentación vive abajo
    5.1.4.8. Importancia de unions y emuladores en sistemas operativos
    5.1.4.9. Del sistema operativo a la virtualización y la nube (Cloud Computing)
    5.1.5. El struct como base para crear las clases en C++
    5.1.5.1. La necesidad era manejar ordenadamente la creciente complejidad

    CAPÍTULO 6
    Creando funciones: ámbitos, parámetros y retorno
    6.1. ¿Para qué sirven las funciones?
    6.1.1. Librerías de funciones
    6.1.2. ¿Qué es un prototipo de función?
    6.1.2.1. El orden de las funciones sí que altera el producto
    6.1.2.2. Declaraciones de prototipo
    6.1.3. Creando una librería externa
    6.1.4. ¿Cómo fusionar todos estos archivos en un proyecto?
    6.1.4.1. Solucionando errores de gestión de proyecto
    6.1.4.2. Cómo pasar parámetros por valor a las funciones
    6.1.5. Dos enfoques para el valor de retorno de una función
    6.1.5.1. Bajando hasta los infiernos de la excepción
    6.1.5.2. ¿Cómo llamar al desensamblador de Visual Studio Code?
    6.1.6. Conclusión sobre las funciones que retornan punteros nulos
    6.1.7. Protegiendo las funciones que reciben punteros
    6.1.8. Aclaración sobre los valores de retorno válidos
    6.1.9. Prácticas poco ortodoxas para salvar un puntero loco
    6.1.9.1. La función definida como static
    6.1.9.2. Cómo asustar al compilador para que no libere una variable local
    6.1.10. Arreglando el diseño de la función ObtenerTextoIdioma
    6.1.11. Pasando parámetros por referencia
    6.1.12. La función ObtenerTextoIdiomaExt arreglada
    6.1.13. ¿Cómo quedaría ahora el programa principal?

    CAPÍTULO 7
    Librerías de funciones clásicas de entrada/salida (I/O)
    7.1. Tres grupos de funciones de entrada/salida
    7.1.1. ¿Por qué estos tipos de funciones de entrada/salida?
    7.1.2. ¿Dónde se encuentran las librerías de estas funciones?

    7.1.3. Un ejemplo de entrada/salida para pantalla y teclado
    7.1.4. Función printf (#include )
    7.1.5. La función scanf
    7.1.5.1. Controlar la longitud de una cadena de texto
    7.1.6. Funciones de entrada de caracteres individuales
    7.1.7. Entrada de caracteres dobles
    7.1.7.1. Captura de las teclas de función
    7.1.8. La función getch()
    7.1.9. La función getche()
    7.1.10. La función putch()
    7.1.11. El teclado
    7.1.11.1. El buffer (o memoria) de teclado
    7.1.11.2. Características del buffer de teclado
    7.1.11.3. El error de buffer overrun
    7.1.12. Las lecturas de teclado a muy bajo nivel desaparecen

    CAPÍTULO 8
    Blockchain como librería de funciones externas
    8.1. Un ejemplo de librería de funciones Blockchain
    8.1.1. Introducción
    8.1.2. ¿Vamos a vender criptomonedas?
    8.1.3. ¿Qué es Blockchain?
    8.2. Características de Blockchain
    8.2.1. Características de las Blockchain a nivel político
    8.2.2. El dilema de las modificaciones y cómo se soluciona
    8.3. El universo Blockchain
    8.3.1. Activos digitales, criptoactivos, tokens fungibles y NFT
    8.4. Uso de los criptoactivos a nivel financiero y de negocio
    8.4.1. ¿Por qué son interesantes a nivel financiero/contable?
    8.4.2. A nivel de contabilización y control de activos
    8.4.3. Como moneda de cambio entre empresas de grupos y de terceros
    8.4.3.1. Como incremento de solidez financiera de filiales
    8.4.3.2. Ejemplo de desacople financiero mediante activos digitales
    8.5. De vuelta al mundo tecnológico
    8.5.1. La encriptación como requisito de ciberseguridad
    8.6. Hashes y la librería externa de encriptación SSL
    8.6.1. La librería OpenSSL como librería externa
    8.6.2. ¿Qué es un hash? ¿Qué es un bloque?
    8.6.3. Similitudes y relaciones entre hashes y encriptaciones
    8.6.4. Comprobación de propiedad: demostrar ser el owner
    8.6.5. Hashes truculentos o Hecha la ley, hecha la trampa
    8.6.6. ¿Qué es un bloque?
    8.6.7. Concatenación o encabalgamiento de hashes
    8.6.8. Blockchain es relativamente caro
    8.6.9. Tipos de cadenas Blockchain y costes por transacción
    8.6.10. Sobre el volumen de transacciones
    8.6.11. La figura del minador de criptoactivos
    8.6.12. Minadores y Fintechs diversas
    8.6.13. Empresas más tranquilas basadas en Blockchain
    8.6.14. Tamaños de redes Blockchain y recursos de implementación
    8.6.14.1. Recursos necesarios en empresas Fintech globales
    8.6.14.2. Recursos necesarios en energéticas y telecos
    8.6.14.3. Recursos necesarios en empresas logísticas grandes
    8.6.14.4. Oficinas de notarías y servicios legales
    8.7. Los objetivos del capítulo
    8.8. Ejercicio único de este capítulo: la blockchain
    8.8.1. Entendiendo las listas dinámicas
    8.8.2. De elementos a bloques de Blockchain
    8.8.3. Funcionamiento del programa de ejemplo de Blockchain
    8.8.3.1. Niveles de funciones:
    8.8.3.2. Reparto de las funciones por niveles
    8.8.4. Repaso de las opciones de programa
    8.8.4.1. Dar de alta nuevo bloque
    8.8.4.2. Generar N bloques aleatorios
    8.8.4.3. Contar bloques
    8.8.4.4. Falsificar bloque N
    8.8.4.5. Listado de todos los bloques
    8.8.4.6. Verificar blockchain
    8.8.4.7. Reconstruir todo el blockchain recalculando bloques falsos
    8.8.4.8. Imprimir el hash de un bloque
    8.8.4.9. Imprimir solo los bloques falsos
    8.8.4.10. Salir (y, sobre todo, liberar bloques con free)
    8.8.4.11. Indiana Jones en busca de la memoria perdida
    8.8.4.12. La función LiberarBlockchain
    8.8.5. Conclusión

    CAPÍTULO 9
    Librerías de funciones de entrada/salida para consola de Windows
    9.1. Aplicación de ejemplo para pantallas de texto avanzadas
    9.2. Funciones de entrada/salida propias de la Consola de Windows
    9.2.1. MS-DOS ya no existe: es una emulación de consola
    9.2.2. ¿Cuándo programar con printf y cuándo usar consola de Windows?
    9.2.3. Construyendo aplicaciones de Consola de Windows
    9.2.4. La tabla de caracteres semigráficos
    9.2.5. Escribiendo una función para entrada de texto: EntraString
    9.2.5.1. Sintaxis de EntraString Código fuente de EntraString
    9.2.6. Uso de EntraString en el contexto del programa
    9.2.6.1. El resto de las funciones auxiliares, de mayor a menor
    9.2.6.2. La función GestionarTeclasEspeciales
    9.2.6.3. La función GoToXY

    9.2.6.4. ¿Y cómo se obtiene el handle del buffer de consola?
    9.2.6.5. La función SetFGColor para cambiar colores de texto
    9.2.7. Funciones de transformación de códigos de página de texto
    9.2.7.1. Código fuente de la función UnicodetoAnsi
    9.2.7.2. Código fuente de la función AnsiToUnicode
    9.2.7.3. La función PrintCPLabel
    9.2.8. Gestionar ventanas indoloras y pintar recuadros
    9.2.8.1. Cómo pintar una ventana con la función PintarVentana
    9.2.8.2. La función PintarVentana
    9.2.8.3. Implementando ventanas indoloras (painless Windows)
    9.2.9. Posibles mejoras para copiar y restaurar ventanas
    9.3. Lectura de ratón y eventos especiales
    9.3.1. El bucle de mensajes
    9.3.2. Los manejadores de eventos
    9.3.2.1. El manejador de teclado
    9.3.2.2. El manejador de ratón
    9.3.2.3. El manejador de redimensionamiento de ventana
    9.3.2.4. El manejador de eventos de paso de foco
    9.3.2.5. El manejador de eventos de menú
    9.3.3. El programa principal del testeador de eventos
    9.3.4. Descargar el código fuente del testeador de eventos
    9.3.5. En el siguiente capítulo

    CAPÍTULO 10
    Librerías de funciones de entrada/salida para ficheros (archivos)
    10.1. Añadiendo funciones para gestión de ficheros
    10.2. Construyendo la parte de grabación de archivos
    10.2.1. La persistencia
    10.2.2. Persistencia mediante bases de datos
    10.2.3. Persistencia mediante archivos
    10.2.4. Archivos secuenciales
    10.2.5. Registros y campos
    10.2.6. Algoritmo típico para un sistema de acceso secuencial
    10.2.7. ¿Se usan mucho los ficheros secuenciales hoy día?
    10.2.7.1. Ficheros secuenciales como archivos de configuración
    10.2.7.2. El formato CSV: un archivo secuencial de datos compatible con Excel
    10.2.7.3. Los archivos de Log como archivos de acceso secuencial
    10.2.7.4. El formato XML como archivo secuencial
    10.2.7.5. El tipo JSON como archivo secuencial
    10.2.7.6. El formato DBF de dBase III, Clipper y FoxPro
    10.2.7.7. Más y más formatos secuenciales
    10.2.8. Los archivos de acceso aleatorio (random)
    10.2.8.1. Cálculo del posicionamiento random
    10.2.8.2. Randoms con cabecera y sin cabecera
    10.2.9. Los archivos de acceso indexado
    10.2.9.1. El número de accesos para encontrar una clave
    10.2.9.2. El árbol binario equilibrado B+ o AVL
    10.2.9.3. Árboles y sarmientos
    10.2.9.4. El mecanismo de equilibrado
    10.2.9.5. El equilibrado on demand
    10.2.9.6. El equilibrado automático
    10.3. Función para crear logs en ficheros secuenciales
    10.3.1. Llamando a la función de Logging
    10.3.2. Explicación de la función WriteLog
    10.3.3. Escritura del fichero de datos de acceso aleatorio
    10.3.4. La solución del registro de cabecera en registro = 0
    10.3.4.1. Planteamiento del registro 0
    10.3.4.2. El cálculo de espacio y el alineamiento de structs
    10.3.4.3. Un problema típico del alineamiento
    10.3.4.4. La opción del modo de alineamiento del compilador
    10.3.4.5. El operador alignof()
    10.3.5. La misión del archivo secuencial de configuración
    10.3.5.1. El sistema clave à valor
    10.3.5.2. Las funciones de trimado
    10.3.6. La función GetConfigParamValue
    10.3.6.1. Inicialización del Registro 0
    10.3.6.2. La función CreateEmptyDataFile
    10.3.6.3. Funciones importantes empleadas para el fichero
    10.3.6.4. Verificar carga de registro 0 y usar metadatos
    10.3.7. Grabación de un registro de datos en fichero random
    10.3.7.1. Modos de edición de registro
    10.3.8. Funciones de cursorización
    10.3.9. Borrado, compactación y truncado de registros
    10.3.9.1. Qué hay que hacer antes de borrar un registro
    10.3.9.2. Qué hay que hacer después de borrar un registro
    10.3.9.3. La función de truncado
    10.3.9.4. La función de compactación
    10.3.9.5. Gestión de la petición de borrado con F5
    10.3.10. Lo que hemos visto son las operaciones CRUD

    CAPÍTULO 11
    Listas dinámicas persistentes con Blockchain y ficheros
    11.1. Persistencia de Blockchain en ficheros
    11.1.1. Repaso introductorio
    11.2. Dos nuevas formas de hackear Blockchain
    11.2.1. El hacking por inserción de punteros
    11.2.2. El hacking por escritura directa o recifrado del fichero de Blockchain
    11.2.3. Analizando el problema de la inserción de un bloque falso

    11.3. Funciones de la capa de persistencia Blockchain

    11.3.1. ExistsFile
    11.3.2. CrearFicheroBlockchain
    11.3.3. ContarBloquesDesdeFichero
    11.3.4. LeerBloque
    11.3.5. LeerCadenaBloquesEnteraDesdeFichero
    11.3.6. EscribirBloque
    11.3.7. EscribirCadenaBloquesEnteraHaciaFichero
    11.4. Código fuente comentado del programa principal
    11.5. Conclusión

    CAPÍTULO 12
    Recursividad, árboles binarios, traversas y punteros a funciones
    12.1. Introducción a los procesos recursivos
    12.1.1. ¿Todos los procesos se pueden hacer recursivos?
    12.1.2. El cálculo de factorial como ejemplo básico
    12.1.3. Código fuente de la factorial de coma flotante, 64 bits
    12.1.4. Dónde se encuentra el código fuente de las factoriales
    12.2. Programación recursiva de determinantes
    12.2.1. ¿Qué es un determinante?
    12.2.2. Organizar las tareas del determinante
    12.2.2.1. El acceso bidimensional a los elementos de la matriz
    12.2.3. El programa principal
    12.3. Introducción a los árboles binarios
    12.3.1. ¿Qué son los árboles binarios?
    12.3.2. Comparación de listas con árboles
    12.3.3. Listas doblemente enlazadas
    12.3.4. El árbol binario de búsqueda (BST o Binary Search Tree)
    12.3.5. Los árboles en Prolog
    12.4. Un ejemplo de diseño de árbol en C
    12.5. Insertando datos en un árbol
    12.5.1. Preparar el árbol
    12.5.2. Insertamos una clave y un valor en un árbol vacío
    12.5.3. Insertamos clave y valor en un árbol con datos preexistentes
    12.5.3.1. Creamos la función de inserción de tipo recursivo
    12.5.4. Experimentando con la secuencia de inserción
    12.6. Introducción a las rotaciones
    12.6.1. Paso 1
    12.6.2. Paso 2
    12.6.2.1. Transición del paso 2 al paso 3
    12.6.3. Paso 3
    12.7. Insertando todos los elementos de prueba
    12.8. Buscando elementos dentro del árbol
    12.8.1. Código fuente de BuscarNodo
    12.8.2. Comprobación del número de comparaciones
    12.9. Traversa In Order y punteros a funciones
    12.9.1. Los métodos de traversas (traversal)
    12.9.2. La traversa in order
    12.9.3. Punteros a funciones
    12.9.3.1. Cómo declarar un prototipo de puntero a función
    12.9.3.2. Asignar una función genérica a este puntero
    12.9.4. Función para contar elementos basada en traversa
    12.10. Función para liberar nodos y el árbol en sí
    12.11. La traversa post order para eliminar el árbol
    12.11.1. Código fuente de la traversa post order
    12.11.2. La función LiberarNodo
    12.12. Código fuente final
    12.13. Conclusión

    Tabla de Contenidos

    Ir a Arriba