Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ta04 PDF
Ta04 PDF
TAREA ACADÉMICA n° 04
Listas simples enlazadas
Código 27115801
Docente
Ayacucho – Perú
Agosto de 2020
Contenido:
DESARROLLO Y RESULTADOS 3
1.1 Desarrollo 3
1.3 Repositorio 21
CONCLUSIONES 22
2
1 DESARROLLO Y RESULTADOS
1.1 Desarrollo
Para el siguiente programa se muestra una variedad de métodos que puede tener una
lista enlazada simple para el registro de estudiantes:
● Creamos la clase Nodo con sus atributos, su constructor y sus métodos set y get para
el control de nodos simplemente enlazados:
//Inicializa estudiante
public Nodo(Estudiante estudiante) {
this.estudiante = estudiante;
}
3
public Estudiante(int idEstudiante, String nombre, String
apellido, int edad) {
this.idEstudiante = idEstudiante;
this.nombre = nombre;
this.apellido = apellido;
this.edad = edad;
}
4
//Cabeza de la lista se vuelve cola(siguiente)
nodo.siguiente = cabeza;
//El nodo recien creado se vuelve cabeza
cabeza = nodo;
longitud++;
5
//Crear el contador para indeicara qué número
está apuntando el puntero
int contador = 0;
//puntero recorre la lista
while (contador < posicion && puntero.siguiente
!= null) {
//El puntero apunta a el suguiente
puntero = puntero.siguiente;
contador++;
}
//Conecta por la derecha
nodo.siguiente = puntero.siguiente;
//Conecta por la izquierda
puntero.siguiente = nodo;
}
longitud++;
6
Nodo primero = cabeza;
//La cabeza apunta al siguiente
cabeza = cabeza.siguiente;
primero.siguiente = null;
longitud--;
//Lista vacía
public boolean estaVacia() {
return cabeza == null;
}
7
return longitud;
}
/**
* Otra Manera de imprimir incorporando el método aprendido
en teoría. While y for son equivalentes pero a diferencia del
for, while hace que sea más legible en este caso (no siendo
siempre de esta manera)
*
* @return
*/
@Override
public String toString() {
//Declaramos un variable String a la cual la
inicializaremos en vacío
String salida = "";
//Crearemos un puntero para que recorra la lista
Nodo puntero;
//Crearemos un contador para el indice de la posición
int contador = 0;
//Recorremos la lista
for (puntero = cabeza; puntero != null; puntero =
puntero.getSiguiente()) {
//Imprimimos los datos de cada elemento de la
lista
salida = salida + contador + "[ " +
puntero.estudiante.getNombre() + " ]\n";
//incremtamos en valor del contador para la
pisción
contador++;
}
8
//Retornamos los valores leídos
return salida;
}
if (idEstudiante ==
puntero.estudiante.getIdEstudiante()) {
//Cambiar el valor de la bandera a
verdadero
encontrado = true;
System.out.println("CÓDIGO\tNOMBRE\tAPELLIDO\tEDAD");
System.out.println(puntero.estudiante.getIdEstudiante()
+ "\t" +
puntero.estudiante.getNombre() + "\t"
+
puntero.estudiante.getApellido() + "\t\t"
+
puntero.estudiante.getEdad());
} else {
//Caso contrario avanza al siguiente nodo
puntero = puntero.siguiente;
}
}
//Devolver el valor de la bandera
return encontrado;
9
// y el siguiente nodo de puentero sea
diferentes de null
while (ID !=
puntero.estudiante.getIdEstudiante() && puntero.siguiente !=
null) {
// Ahora puntero apunta al siguiente nodo
puntero = puntero.siguiente;
}
// Conecta por el lado derecho
nodo.siguiente = puntero.siguiente;
// Conecta por el lado izquierdo
puntero.siguiente = nodo;
}
System.out.println("Ingresando el elemento "
+ "\nCódigo: \t" +
nodo.estudiante.getIdEstudiante()
+ "\nNombre: \t" +
nodo.estudiante.getNombre()
+ "\nApellido: \t" +
nodo.estudiante.getApellido()
+ "\nEdad: \t\t" +
nodo.estudiante.getEdad());
}
10
// El nodo después de
"next" ahora es "puntero"
next.siguiente = puntero;
// El nodo después de
"puntero" ahora es "sig"
puntero.siguiente = sig;
} else {
//Declarar un nuevo
nodo que apunte al nodo siguiente de "next"
Nodo sig1 = next.siguiente;
// Ahora "cabeza" es
"netx"
cabeza = next;
// Ahora el siguiente
nodo de "next" es "puntero"
next.siguiente = puntero;
// Ahora el suiente
nodo de "puntero" es "sig1"
puntero.siguiente = sig1;
}
// Ahora "previous" es "next"
previous = next;
// ahora "next" apunta al
siguiente nodo de "puntero"
next = puntero.siguiente;
} else {
previous = puntero;
puntero = next;
next = next.siguiente;
}
}
} while (cambio);
}
}
11
lista.insertarInicio(new Estudiante(271244, "Carlos",
"Suárez", 22));
lista.insertarInicio(new Estudiante(271133, "José",
"Rua", 20));
lista.insertarInicio(new Estudiante(271222, "Rosa",
"León", 22));
lista.insertarInicio(new Estudiante(271411, "Pedro",
"Quintas", 21));
System.out.println("");
}
}
12
1.1.2 Ejercicio 3.2.2
Para la implementación de este ejercicio se mostrará algunas operaciones que se pueden hacer
al ingresar enteros positivos en una lista enlazada simple
//Inicializa numero
public Nodo(Numero numero) {
this.numero = numero;
}
13
Del mismo modo todos los métodos de agregar al inicio o al final, mostrar los valores
mayor y menor de la lista, promedio de elementos y la correspondiente impresión de
estos:
14
puntero = puntero.siguiente;
}
//Ahora el siguiente nodo de puntero es el nodo
creado
puntero.siguiente = nodo;
}
dimension++;
System.out.print("Número " + nodo.numero.getValor());
System.out.print(" agregado correctamente al final de la
lista\n");
}
15
public class PruebalistaNumero {
System.out.println("-----Hallando el promedio de la
lista ingresada-----");
lista.promedio();
System.out.println("");
}
Al ejecutar nuestro programa para el ejercicio 3.2.1 se obtiene los siguientes resultados:
16
Ilustración 1.1: Resultado para las cuestiones A y B de ejecutar el ejercicio 3.2.1.
17
Ilustración 1.3: Resultado para las cuestiones E, F y G de ejecutar el ejercicio 3.2.1.
18
Interpretación:
Al ejecutar nuestro programa para el ejercicio 3.2.1 se obtiene los siguientes resultados:
19
Ilustración 1.5: Resultado para las cuestiones de ejecutar el ejercicio 3.2.1.
20
Interpretación:
Como para el ejercicio anterior, este programa tiene métodos similares de agregarInicio(),
mostrarLista() o agregarFinal() que tienen la misma lógica de inserción de elementos a la
lista y métodos diferentes como mayorYMenor() para indicar el mayor y el menor de los
elementos y promedio(), que nos calcula el promedio de los elementos ingresados (Ilustración
1.5).
1.3 Repositorio
21
2 CONCLUSIONES
Se logró implementar correctamente las listas simples enlazadas.
Se aplicó la estructura Lista para almacenar datos y valores dentro de una lista,
esto está reflejado cuando se quiere imprimir la lista.
Se logró aprender a definir y manipular estructuras de listas simples enlazadas.
Se logró realizar las operaciones con listas simples enlazadas, esto gracias a la
implementación de métodos que almacenan y hacen recorridos dentro de la lista.
22