Desafío: Implementación de los Métodos Size y Delete en LinkedList
Tarea
Has implementado tres de las cuatro operaciones CRUD. En esta tarea, necesitas implementar dos métodos:
public int size();public void delete(int index).
La asignación está en GitHub, por lo que debes implementarla localmente en tu IDE.
Verás la solución de esta tarea con comentarios sobre la implementación.
Una breve guía para completar esta tarea:
- Se recomienda comenzar con el método
size(). Primero, debes declarar una variable para llevar el conteo del número de elementos en la lista y luego simplemente devolver esta variable desde el método; - En el método
size(), sigue los mismos pasos que en el métododisplay(). Sin embargo, en lugar de imprimir los elementos en pantalla, incrementa la variable que creaste; - En el método
delete(), pasa elindexcomo parámetro. Es fundamental validar el índice para asegurarse de que esté dentro del rango correcto; - Si
index == 0, simplemente actualiza la referencia estableciendohead = head.next; - Luego, realiza operaciones con el ciclo
forpara encontrar el índice deseado del elemento; - Una vez que se encuentre el elemento requerido, realiza la siguiente operación:
node.next = node.next.next;; - De esta manera, eliminarás la referencia al elemento eliminado, eliminándolo efectivamente de la lista.
Una vez que termines la tarea, puedes ejecutar el método main, donde se proporcionan algunas pruebas.
Adicionalmente, puedes ejecutar las pruebas unitarias ubicadas en la carpeta test para validar tu solución.
- Iterar cuidadosamente – al implementar el método
size(), recorre la lista igual que endisplay(), pero en lugar de imprimir valores, incrementa un contador; - Considerar los casos límite – en el método
delete(), siempre verifica siindex == 0para actualizar correctamentehead, y asegúrate de que el índice esté dentro de los límites antes de continuar; - Actualizar los enlaces correctamente – al eliminar un nodo, actualiza
current.next = current.next.nextpara omitir el elemento, eliminándolo efectivamente de la lista.
package com.example;
class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
this.next = null;
}
}
class SinglyLinkedList {
private Node head;
public SinglyLinkedList() {
this.head = null;
}
public void append(int data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
return;
}
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
}
public void display() {
Node current = head;
while (current != null) {
System.out.print(current.data + " ");
current = current.next;
}
System.out.println();
}
public void update(int index, int newData) {
if (index < 0 || index >= size()) {
System.out.println("Invalid index");
return;
}
Node current = head;
for (int i = 0; i < index; i++) {
current = current.next;
}
current.data = newData;
}
public void delete(int index) {
if (index < 0 || index >= size()) {
System.out.println("Invalid Index");
return;
}
if (index == 0) {
head = head.next;
return;
}
Node current = head;
for (int i = 0; i < index - 1; i++) {
current = current.next;
}
current.next = current.next.next;
}
public int size() {
int count = 0;
Node current = head;
while (current != null) {
count++;
current = current.next;
}
return count;
}
}
public class Main {
public static void main(String[] args) {
SinglyLinkedList linkedList = new SinglyLinkedList();
// Adding elements to the end of the list (Create)
linkedList.append(1);
linkedList.append(2);
linkedList.append(3);
linkedList.append(4);
// Displaying the content of the list (Read)
System.out.println("Contents of the list:");
linkedList.display();
// Updating a value by index (Update)
linkedList.update(2, 10);
System.out.println("List after updating the value at index 2:");
linkedList.display();
// Deleting an element by index (Delete)
linkedList.delete(1);
System.out.println("List after deleting the element at index 1:");
linkedList.display();
}
}
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you explain how the size() method works in this implementation?
What happens if I try to delete an element at an invalid index?
Can you walk me through the delete() method step by step?
Genial!
Completion tasa mejorada a 4
Desafío: Implementación de los Métodos Size y Delete en LinkedList
Desliza para mostrar el menú
Tarea
Has implementado tres de las cuatro operaciones CRUD. En esta tarea, necesitas implementar dos métodos:
public int size();public void delete(int index).
La asignación está en GitHub, por lo que debes implementarla localmente en tu IDE.
Verás la solución de esta tarea con comentarios sobre la implementación.
Una breve guía para completar esta tarea:
- Se recomienda comenzar con el método
size(). Primero, debes declarar una variable para llevar el conteo del número de elementos en la lista y luego simplemente devolver esta variable desde el método; - En el método
size(), sigue los mismos pasos que en el métododisplay(). Sin embargo, en lugar de imprimir los elementos en pantalla, incrementa la variable que creaste; - En el método
delete(), pasa elindexcomo parámetro. Es fundamental validar el índice para asegurarse de que esté dentro del rango correcto; - Si
index == 0, simplemente actualiza la referencia estableciendohead = head.next; - Luego, realiza operaciones con el ciclo
forpara encontrar el índice deseado del elemento; - Una vez que se encuentre el elemento requerido, realiza la siguiente operación:
node.next = node.next.next;; - De esta manera, eliminarás la referencia al elemento eliminado, eliminándolo efectivamente de la lista.
Una vez que termines la tarea, puedes ejecutar el método main, donde se proporcionan algunas pruebas.
Adicionalmente, puedes ejecutar las pruebas unitarias ubicadas en la carpeta test para validar tu solución.
- Iterar cuidadosamente – al implementar el método
size(), recorre la lista igual que endisplay(), pero en lugar de imprimir valores, incrementa un contador; - Considerar los casos límite – en el método
delete(), siempre verifica siindex == 0para actualizar correctamentehead, y asegúrate de que el índice esté dentro de los límites antes de continuar; - Actualizar los enlaces correctamente – al eliminar un nodo, actualiza
current.next = current.next.nextpara omitir el elemento, eliminándolo efectivamente de la lista.
package com.example;
class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
this.next = null;
}
}
class SinglyLinkedList {
private Node head;
public SinglyLinkedList() {
this.head = null;
}
public void append(int data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
return;
}
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
}
public void display() {
Node current = head;
while (current != null) {
System.out.print(current.data + " ");
current = current.next;
}
System.out.println();
}
public void update(int index, int newData) {
if (index < 0 || index >= size()) {
System.out.println("Invalid index");
return;
}
Node current = head;
for (int i = 0; i < index; i++) {
current = current.next;
}
current.data = newData;
}
public void delete(int index) {
if (index < 0 || index >= size()) {
System.out.println("Invalid Index");
return;
}
if (index == 0) {
head = head.next;
return;
}
Node current = head;
for (int i = 0; i < index - 1; i++) {
current = current.next;
}
current.next = current.next.next;
}
public int size() {
int count = 0;
Node current = head;
while (current != null) {
count++;
current = current.next;
}
return count;
}
}
public class Main {
public static void main(String[] args) {
SinglyLinkedList linkedList = new SinglyLinkedList();
// Adding elements to the end of the list (Create)
linkedList.append(1);
linkedList.append(2);
linkedList.append(3);
linkedList.append(4);
// Displaying the content of the list (Read)
System.out.println("Contents of the list:");
linkedList.display();
// Updating a value by index (Update)
linkedList.update(2, 10);
System.out.println("List after updating the value at index 2:");
linkedList.display();
// Deleting an element by index (Delete)
linkedList.delete(1);
System.out.println("List after deleting the element at index 1:");
linkedList.display();
}
}
¡Gracias por tus comentarios!