Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Implementación de los Métodos Size y Delete en LinkedList | Estructuras de Datos Fundamentales en Java
Estructuras de Datos en Java

bookDesafí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étodo display(). Sin embargo, en lugar de imprimir los elementos en pantalla, incrementa la variable que creaste;
  • En el método delete(), pasa el index como parámetro. Es fundamental validar el índice para asegurarse de que esté dentro del rango correcto;
  • Si index == 0, simplemente actualiza la referencia estableciendo head = head.next;
  • Luego, realiza operaciones con el ciclo for para 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 en display(), pero en lugar de imprimir valores, incrementa un contador;
  • Considerar los casos límite – en el método delete(), siempre verifica si index == 0 para actualizar correctamente head, 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.next para 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();
    }
}
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 7

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

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?

bookDesafí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étodo display(). Sin embargo, en lugar de imprimir los elementos en pantalla, incrementa la variable que creaste;
  • En el método delete(), pasa el index como parámetro. Es fundamental validar el índice para asegurarse de que esté dentro del rango correcto;
  • Si index == 0, simplemente actualiza la referencia estableciendo head = head.next;
  • Luego, realiza operaciones con el ciclo for para 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 en display(), pero en lugar de imprimir valores, incrementa un contador;
  • Considerar los casos límite – en el método delete(), siempre verifica si index == 0 para actualizar correctamente head, 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.next para 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();
    }
}
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 7
some-alt