• CAPITULO 1. LISTAS
    • 1.1 El concepto de Lista
    • 1.2 Creación de una lista
    • 1.3 Impresión de una lista
    • 1.4 Inserción de un dato en una lista despúes de un nodo dado
    • 1.5 Inserción de un dato en una lista antes de un nodo dado
    • 1.6 Inserción de un dato en una lista entre dos nodos dados
    • 1.7 Cómo mantener una lista clasificada ascendentemente
    • 1.8 Creación de una lista clasificada ascendentemente
    • 1.9 Retiro de un nodo de una lista
    • 1.10 Ejercicios
    • 1.11 Listas circulares
    • 1.12 Inserción de un nodo al final de una lista circular
    • 1.13 Retiro de un nodo de una lista circular
    • 1.14 La clase ListaCircular
    • 1.15 Cómo pintar la media luna
    • 1.16 Nodos de encabezamiento
    • 1.17 Suma de polinomios
    • 1.18 Ejercicios
    • 1.19 Listas doblemente encadenadas
    • 1.20 Inserción de un dato en una lista doblemente encadenada despúes de un nodo dado
    • 1.21 Retiro de un nodo de una lista doblemente encadenada
    • 1.22 Listas circulares doblemente encadenadas
    • 1.23 Creación de una lista circular doblemente encadenada
    • 1.24 Construcción de la clase ListaDobCir
    • 1.25 Creación de una lista desde otro proceso
    • 1.26 Suma de dos números muy grandes
    • 1.27 Ejercicios
    • 1.28 Impresión de una lista recursivamente
    • 1.29 Ejercicios
  • CAPITULO 2. COLAS Y PILAS
    • 2.1 Colas
    • 2.2 Ejercicios
    • 2.3 Colas implementadas usando arreglos
    • 2.4 Ejercicios
    • 2.5 Colas con dos entradas
    • 2.6 Ejercicios
    • 2.7 Bicolas: Estructuras Deque
    • 2.8 Ejercicios
    • 2.9 Pilas
    • 2.10 Ejercicios
    • 2.11 Representación de una pila utilizando listas simples
    • 2.12 Notaciones Infijo, Posfijo y Prefijo
    • 2.13 Ejercicios
    • 2.14 Transformación de Infijo a Posfijo cuando no existen paréntesis
    • 2.15 Ejercicios
    • 2.16 Transformación de Infijo a Posfijo cuando existen paréntesis
    • 2.17 Ejercicios
    • 2.18 Evaluación de expresiones escritas en Posfijo
    • 2.19 Evaluación de expresiones escritas en Infijo
    • 2.20 El problema del laberinto
    • 2.21 Ejercicios
    • 2.22 Las torres de Hanoi
    • 2.23 Ejercicios
  • CAPITULO 3. ARBOLES BINARIOS
    • 3.1 Terminología
    • 3.2 Creación de un árbol binario
    • 3.3 Formas de recorrer un árbol binario
    • 3.4 Ejercicios
    • 3.5 Mantenimiento de un conjunto de números clasificados ascendentemente utilizando un árbol binario ordenado
    • 3.6 Impresión de un árbol en Inorden
    • 3.6.1 Impresión de un árbol en Inorden recursivamente
    • 3.7 Impresión de un árbol en Preorden usando una pila
    • 3.7.1 Impresión de un árbol en Preorden recursivamente
    • 3.8 Impresión de un árbol en Posorden usando una pila
    • 3.8.1 Impresión de un árbol en Posorden recursivamente
    • 3.9 Impresión de un árbol por niveles usando una cola
    • 3.10 Cálculo de la altura de un árbol binario
    • 3.11 Búsqueda de un dato en un árbol binario no ordenado
    • 3.12 Cálculo del número de hojas en un árbol binario
    • 3.13 Ejercicios
    • 3.14 Arboles binarios tejidos
    • 3.15 Creación de un árbol tejido por la derecha
    • 3.16 Impresión de un árbol tejido por la derecha en Preorden
    • 3.17 Impresión de un árbol tejido por la derecha en Inorden
    • 3.18 Creación de un árbol tejido completo
    • 3.19 Ejercicios
    • 3.20 Reconstrucción de un árbol binario
    • 3.21 Colas de prioridad usando el concepto de un árbol binario
    • 3.22 Ejercicios
    • 3.23 Representación de expresiones aritméticas en árboles binarios
    • 3.24 Conversión de una expresión en un árbol binario a su representación Infijo
    • 3.25 Ejercicios
    • 3.26 Retiro de un nodo de un árbol binario
    • 3.27 Ejercicios
    • 3.28 Construcción de un índice analítico usando árboles binarios ordenados
    • 3.29 Ejercicios
  • CAPITULO 4. ARBOLES AVL
    • 4.1 Ejercicios
    • 4.2 El concepto de rotación en árboles AVL
    • 4.3 Una rotación a la derecha
    • 4.4 Una rotación a la izquierda
    • 4.5 Doble rotación a la derecha
    • 4.6 Doble rotación a la izquierda
    • 4.7 Inserción de un nodo en un árbol AVL
    • 4.8 Rebalance desde el nodo pivote hasta el nodo nuevo
    • 4.9 Rotación del árbol
    • 4.10 Cómo determinar el tipo de rotación
    • 4.11 Ejercicios
    • 4.12 Retiro de un nodo de un árbol AVL
    • 4.13 Las variables Pila, Terminar y t.
    • 4.14 Balance por la izquierda
    • 4.15 Balance por la derecha
    • 4.16 Construción del método retirarAVL()
    • 4.17 Ejercicios
    • 4.18 Ejercicio. Creación de un árbol AVL desde un proceso cliente
  • CAPITULO 5. ARBOLES ENEARIOS
    • 5.1 Definición
    • 5.2 Creación de árboles enearios
    • 5.2.1 Arbol de divisores
    • 5.2.2 Arbol genealógico
    • 5.3 Creación de un árbol de matrices
    • 5.4 Recorridos de los árboles enearios
    • 5.4.1 Recorrido Inorden
    • 5.4.2 Recorrido Preorden
    • 5.4.3 Recorrido Posorden
    • 5.4.4 Recorrido Posorden utilizando una pila
    • 5.4.5 Recorido de un árbol por niveles
    • 5.5 Conteo de las hojas de un árbol eneario
    • 5.6 Rutina para determinar si un número está  en un árbol
    • 5.7 Arboles pirámide
    • 5.8 Gordura de un árbol eneario
    • 5.9 Camino desde la raíz hasta un nodo
    • 5.10 Ejercicios
    • 5.11 Arboles lógicos
    • 5.12 Ejercicios
  • CAPITULO 6. RUTINAS PARA CLASIFICACION DE DATOS
    • 6.1 El Quick Sort
    • 6.2 Ejercicios
    • 6.3 Construcción del método quickSort().
    • 6.4 Ejercicios
    • 6.5 El método inserción().
    • 6.6 El Shell Sort
    • 6.7 Ejercicios
    • 6.8 El merge sort
    • 6.9 Ejercicios
    • 6.10 El heap sort
    • 6.11 Ejercicios
    • 6.12 El método de la burbuja
    • 6.13 Ejercicios
    • 6.14 El Radix Sort
    • 6.15 Ejercicios
  • CAPITULO 7. ARBOLES B
    • 7.1 Objetivos de los árboles B
    • 7.2 Características de los árboles B
    • 7.3 Ejercicios
    • 7.4 Anatomía de una página
    • 7.5 Impresión de un árbol B
    • 7.6 Búsqueda de una llave en un árbol B
    • 7.7 Ejercicios
    • 7.8 Procedimiento para insertar una llave
    • 7.9 Ejercicios
    • 7.10 Desarrollo de un algoritmo para insertar una nueva llave en un árbol B de orden N
    • 7.10.1 Inicialización de una página
    • 7.10.2 Creación de una página
    • 7.10.3 Inserción de un dato x en una página
    • 7.10.4 Determinación de dónde se debe insertar un dato x .
    • 7.10.5 Método para correr los apuntadores a la derecha
    • 7.10.6 Método para romper una página en dos
    • 7.10.7 Método para insertar una nueva llave en un árbol B
    • 7.11 Ejercicios
    • 7.12 Procedimiento para retirar una llave de un árbol B
    • 7.13 Ejercicios
    • 7.14 Construcción de un algoritmo que retira una llave de un árbol B .
    • 7.14.1 Método para buscar la llave a retirar
    • 7.14.2 Método que determine si una página es hoja o no
    • 7.14.3 Retiro de una llave de una página
    • 7.14.4 Retiro de un apuntador de una página
    • 7.14.5 Método que resuelve los casos 2 y 3
    • 7.14.6 Método para unir dos páginas
    • 7.14.7 Ejercicios
    • 7.14.8 Elaboración de un método que retira una llave de un árbol B
    • 7.15 Ejercicios
  • CAPITULO 8. Códigos de Huffman
    • 8.1 Utilización de los códigos de Huffman
    • 8.2 Ejercicios
  • CAPITULO 9. Arboles Rojinegros
    • 9.1 Algoritmo para insertar llaves
    • 9.2 Ejercicios
    • 9.3 Programa para insertar una llave
    • 9.4 Ejercicios
    • 9.5 Retiro de una llave
    • 9.5.1 Rotaciones
    • 9.5.2 Programa para retirar una llave
    • 9.5.3 Ejercicios
  • CAPITULO 10. Arboles Digitales y Arboles Enearios
    • 10.1 Arboles digitales
    • 10.2 Ejercicios
    • 10.3 Arboles enearios
    • 10.4 Ejercicios
    • 10.5 La clase Enearios
    • 10.6 Ejercicio
  • CAPITULO 11. Dispersión
    • 11.1 Tecnicas de Dispersión
    • 11.2 Calculo del número de dispersión
    • 11.2.1 Método de División
    • 11.2.2 Método de Mid-square
    • 11.2.3 Método Folding Method(Plegamiento)
    • 11.2.4 Método Transformación de llaves
    • 11.2.5 Ejercicios
    • 11.3 Resolución de colisiones
    • 11.3.1 Resolución de colisiones con encadenamiento separado
    • 11.3.2 Ejercicios
    • 11.3.3 Resolución de colisiones por el método Encadenamiento Lineal
    • 11.3.4 Ejercicios
    • 11.3.5 La clase DispLineal
    • 11.3.6 Resolución de colisiones con el método Doble Hash
    • 11.3.7 Ejercicios
    • 11.3.8 La clase DobleHash
    • 11.3.9 Ejercicios
    • 11.3.10 Resolución de colisiones con el método Prueba Cuadrática
    • 11.3.11 Ejercicios
    • 11.3.12 La clase DispCuadratica
    • 11.3.13 Ejercicios
    • 11.3.14 Resolución de colisiones usando cubetas
    • 11.3.15 Ejercicios
    • 11.3.16 Expansiones parciales
    • 11.3.17 Ejercicios
    • 11.3.18 Retiro de llaves de una cubeta
    • 11.3.19 Ejercicios
  • Apéndices
    • Apéndice A. Tabla ASCII
    • Apéndice B. Palabras Reservadas
    • Apéndice C. Jerarquia de Operadores
    • Apéndice D. Bibliografía
    • Indice