- 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