Manual de Java
Manual de Java
CLASE - ListaSimplementeEnlazada
Esta clase implementa una lista simplemente enlazada, que es una estructura de
datos donde cada elemento (llamado nodo) tiene dos partes:
1. Atributo cabeza:
o Este método recorre toda la lista e imprime los datos de cada nodo.
Empieza desde la cabeza y va siguiendo los nodos hasta llegar al
final (null).
CLASE – NODO
Esta clase representa a un nodo en una lista enlazada, donde cada nodo tiene un
valor (dato) y una referencia al siguiente nodo (siguiente). El constructor
simplemente inicializa estos valores cuando creamos un nuevo nodo.
CLASE – MAIN
Al ejecutar el código, se crea una lista enlazada con los elementos 10, 20 y 30.
Luego, se verifica que el elemento 20 esté en la lista, se modifica 20 por 25, y
finalmente se elimina el primer elemento (10). Después de estas operaciones, la
lista queda con los elementos 25 y 30. El resultado final muestra que todo se
ejecutó correctamente.
PROPOSITOS/POSIBLES USOS
c) Recorrer la lista: Examina todos los elementos uno por uno, útil para
visualizar o procesar los datos.
Posibles usos:
Este es el primer nodo de la lista. Si la lista está vacía, será null. La cabeza
sirve para acceder al primer elemento de la lista.
Este es el último nodo de la lista. Si la lista está vacía, también será null. La
cola se utiliza para acceder al último nodo de la lista.
a) Este método agrega un nuevo nodo con el valor dato al final de la lista.
b) Si la lista está vacía (cabeza == null), el nuevo nodo se convierte tanto en
la cabeza como en la cola de la lista.
c) Si la lista ya tiene nodos, el nuevo nodo se conecta al final de la lista,
actualizando los punteros siguiente y anterior de los nodos involucrados.
int dato;
6. Nodo siguiente;
7. Nodo anterior;
CLASE – MAIN
La clase Main sirve para probar y mostrar cómo interactuar con la estructura de
datos ListaDoblementeEnlazada, creando el objeto listo y ejecutando las
operaciones sobre ella.
1.- Creación de un objeto de la lista:
Similar al paso anterior, pero esta vez, se recorre la lista desde el último
nodo (cola) hasta el primero. Se usa el método recorrerDesdeCola ().
5.- Buscar un elemento en la lista:
Al ejecutar el código, se crea una lista enlazada con los elementos 10, 20 y 30.
Luego, se verifica que el elemento 20 esté en la lista, se modifica 20 por 25, y
finalmente se elimina el primer elemento (10). Después de estas operaciones, la
lista queda con los elementos 25 y 30. El resultado final muestra que todo se
ejecutó correctamente.
PROPOSITOS/POSIBLES USOS
Posibles usos:
b) Mostrar – 36-47
Devuelve una representación de la lista enlazada como una cadena.
Recorre cada nodo desde la cabeza hasta el final y construye una cadena
con los números separados por ->
c) Buscar – 48-59
Busca un número en la lista.
Devuelve true si el número está, y false si no.
d) Eliminar – 60-83
A) insertar
C) Eliminar
2. Intenta eliminarlo.
Ejecutado
Posibles usos:
METODOS:
1. agregarAlInicio:
B.-Si la lista está vacía, ese nodo será tanto el inicio como el fin.
C.-Si la lista ya tiene elementos, el nuevo nodo apunta al nodo actual de inicio
como siguiente, y el nodo actual de inicio apunta hacia atrás al nuevo nodo como
anterior.
2. agregarAlFinal:
B.-Similar a agregarAlInicio, pero aquí se actualizan los punteros del nodo que
está en el último lugar (fin).
3. mostrarInicioAFin:
A.- Recorre la lista desde el nodo inicio hasta el nodo fin usando el puntero
siguiente.
4. mostrarFinAInicio:
A.-Es similar al método anterior, pero recorre la lista desde el nodo fin hacia el
nodo inicio usando el puntero anterior.
5. eliminarNodo:
Si el nodo existe:
Si no existe:
CLASE - MAIN
Estructura principal (do-while) – (110-151)
Mantiene el programa ejecutándose hasta que el usuario elija salir (opción 6).
System.out.println("Menú de Opciones:");
System.out.println-("6. Salir");
CLASE - NODO
Constructor:
PROPOSITOS/POSIBLES USOS
Posibles usos:
Métodos:
CLASE NODO
Atributos:
EJECUTADO
El programa permite gestionar una pila doblemente enlazada de manera eficiente,
realizando las operaciones de apilar, desapilar, mostrar y recorrer los elementos
en ambas direcciones.
PROPOSITOS/POSIBLES USOS
Implementar una pila: Usa una lista doblemente ligada para manejar
elementos en una estructura tipo LIFO (Último en entrar, primero en salir).
Posibles usos:
Atributos:
METODOS:
3. Si ya hay elementos:
2. Si hay elementos:
c) Si el nuevo nodo cabeza es null (la cola quedó vacía), también establece
la cola como null.
Recorre la lista desde la cabeza hasta el final (cola) y muestra los valores de los
nodos.
2. Si hay elementos:
a) Usa un bucle while para recorrer cada nodo, imprimiendo su valor (dato).
Usa scanner.nextLine() para leer la línea completa y luego divide los valores
con.split(" ").
El programa demuestra cómo gestionar una cola utilizando una lista doblemente
enlazada, implementando operaciones clave como agregar elementos, eliminarlos
siguiendo el principio FIFO (First In, First Out) y visualizar el estado actual de la
cola. Permite al usuario agregar múltiples valores consecutivos de manera
sencilla, mostrando cada acción realizada en tiempo real. Su diseño flexible y
funcional es ideal para entender la estructura y comportamiento de una cola
dinámica, destacando su utilidad en aplicaciones que requieren manejo eficiente
de datos en orden secuencial.
PROPOSITOS/POSIBLES USOS
Implementar una cola: Usa una lista doblemente ligada para manejar
elementos en una estructura tipo FIFO (Primero en entrar, primero en salir).
Posibles usos:
Este bloque maneja el caso base de la recursión, es decir, la condición que hace
que la recursión se detenga. Sabemos que la factorial de 0 o 1 es siempre 1. Así
que, si el valor de n es 0 o 1, el programa imprime un mensaje que indica que está
en el caso base y retorna 1.
Caso Recursivo (Llamada a Sí Mismo)
EJECUTADO
Posibles usos:
Método recursivo para insertar un valor en el árbol siguiendo las reglas del árbol
binario de búsqueda:
Base case: Si el nodo actual es null, significa que hemos encontrado una
posición vacía en el árbol donde podemos insertar el nuevo nodo. Creamos
un nuevo nodo con el valor data y lo devolvemos.
Método preorder():
Método postorder():
EJECUTADO
PROPOSITOS/POSIBLES USOS
Posibles usos:
9.-Gestión burbuja
CLASE - GestionBurbuja
1. Clase Principal y Método main:
7. Método mostrarArreglo
Todos los elementos menores o iguales al pivote están antes que él.
6. Imprimir el Arreglo
Este es un simple método para imprimir los elementos del arreglo en una sola
línea. Utiliza un bucle for-each para recorrer el arreglo y mostrar sus elementos.
EJECUTADO
Este es un bucle for que controla el gap (el tamaño del salto entre los elementos
que se comparan). Comenzamos con un gap igual a la mitad de la longitud del
arreglo n / 2, y luego reducimos el gap a la mitad en cada iteración (gap /= 2).
Al principio, el gap es grande, lo que permite que los elementos estén más
dispersos.
Dentro del bucle exterior, tenemos otro bucle for que recorre el arreglo desde el
índice gap hasta el final del arreglo (i < n). En cada iteración:
temp: Guardamos el valor actual del arreglo arr[i] para poder insertarlo en la
posición correcta más adelante.
j: Inicializamos una variable j que nos ayudará a recorrer el arreglo y mover
los elementos según sea necesario.
arr[j - gap] > temp: Compara el valor en la posición j - gap con el valor
guardado en temp. Si el valor de arr[j - gap] es mayor que temp, significa
que debe ser desplazado una posición hacia adelante.
Este proceso permite que los elementos más grandes "se deslicen" hacia la
derecha hasta encontrar su lugar correcto en el arreglo.
EJECUTADO
Usos o propósitos:
3. Atributos
5. Método updateArray
6. Método paintComponent
Propósito: Dibuja las barras que representan los números.
7. Método getMaxValue
Propósito: Encuentra el valor máximo en el arreglo. Esto se usa para escalar las
alturas de las barras proporcionalmente.
8. Método countingSort
Propósito: Ordena los números según un dígito específico (unidad, decena, etc.).
9. Método radixSort
Lo que estamos viendo es una representación gráfica del algoritmo Radix Sort, en
el cual se están ordenando los números ingresados por el usuario. Cada barra en
la visualización corresponde a un número del conjunto, y su altura es proporcional
a su valor.
En este punto del proceso, la barra en color rojo (que representa el número 12)
indica el elemento que está siendo evaluado o colocado en la posición correcta
durante esta iteración del algoritmo. Las demás barras en color azul corresponden
a los elementos ya procesados o que están en espera de ser ordenados.
La visualización no solo muestra el progreso del algoritmo paso a paso, sino que
también permite comprender de manera intuitiva cómo se realiza el ordenamiento
de los datos con base en los dígitos de menor a mayor significancia.
POSIBLES USOS:
Procesamiento de Archivos Grandes:
En aplicaciones como compresión de archivos o clasificación de grandes
volúmenes de registros, RadixSort es una opción eficiente porque evita las
comparaciones directas entre elementos, lo que lo hace ideal para datos con
valores numéricos de gran magnitud.
a) Instrucción al usuario:
Se le pide al usuario que ingrese los elementos para las dos listas (A y
B).
4. Método leerLista
a) Entrada de datos:
b) Conversión a enteros:
Usamos un ciclo for para recorrer cada elemento del arreglo de cadenas,
convertirlo a un número entero con Integer.parseInt(), y agregarlo a la lista
correspondiente.
c) Ordenación:
a) Proceso de intercalación:
Usamos dos índices, i para lista1 y j para lista2, para recorrer ambas
listas.
b) Mostrar proceso:
7. Resultado Final:
POSIBLES USOS
b) Optimización de Procesos:
a) Scanner se inicializa para leer entradas del usuario. Se pide que el usuario
ingrese números hasta que ingrese 0, lo que terminará el proceso.
9. Búsqueda Secuencial
Por ejemplo, si el usuario ingresa los números: [12, 67, 34, 89, 66, 43, 21, 54, 90,
58], el programa los ordenará y mostrará el arreglo ordenado: [12, 21, 34, 43, 54,
58, 66, 67, 89, 90]. Posteriormente, si se busca el número 54, el programa indicará
que se encuentra en la posición 4 del arreglo ordenado.
POSIBLES USOS:
Aquí simplemente imprimimos las listas ingresadas para que el usuario pueda
verificarlas.
7. Método leerLista
8. Método mezclarListas
EJECUTADO
POSIBLES USOS:
a) Procesamiento de registros:
En aplicaciones de tecnología, como sistemas que procesan logs o registros,
permite fusionar datos provenientes de diferentes fuentes, como servidores o
dispositivos.
b) Simulación de procesos empresariales:
6. Mostrar el Resultado
POSIBLES USOS:
a) Scanner: Esta librería se usa para leer entradas del usuario desde la
consola, lo que nos permite obtener datos como el tamaño del arreglo, los
elementos del arreglo y el número que queremos buscar.
b) Arrays.sort(): Esta función de la librería Arrays se utiliza para ordenar el
arreglo de enteros de forma ascendente antes de aplicar la búsqueda
binaria.
a) Parámetros:
c) Lógica:
Función main:
POSIBLES USOS:
Clase Node: Esta clase define un nodo de la lista enlazada. Cada nodo contiene
dos elementos:
a) data: el valor que queremos almacenar (en este caso, un número entero).
Esto nos da un índice entre 0 y SIZE-1, lo que nos asegura que los elementos
serán distribuidos dentro del arreglo de manera eficiente.
a) insert(int key): Esta función usa la función hash para determinar el índice
en la tabla donde debemos insertar el elemento. Si ya existe una lista
enlazada en esa posición, simplemente insertamos el nuevo valor al
principio de la lista; si no, creamos una nueva lista enlazada en esa
posición.
b) search(int key): Similar a insert, esta función calcula el índice de la tabla
usando la función hash. Luego, busca el elemento dentro de la lista
enlazada correspondiente a esa posición.
POSIBLES USOS: