Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Implementatie van Size- en Delete-methoden in LinkedList | Fundamentele Datastructuren in Java
Java Datastructuren

bookUitdaging: Implementatie van Size- en Delete-methoden in LinkedList

Taak

Je hebt drie van de vier CRUD-operaties samen geïmplementeerd. In deze taak moet je twee methoden implementeren:

  • public int size();
  • public void delete(int index).

De opdracht staat op GitHub, dus je moet deze lokaal in je IDE implementeren.

Je ziet de oplossing van deze taak met opmerkingen over de implementatie.

Een korte handleiding om deze taak te voltooien:

  • Begin met de methode size(). Je moet eerst een variabele declareren om het aantal elementen in de lijst bij te houden, en vervolgens deze variabele simpelweg retourneren vanuit de methode;
  • In de methode size(), volg je dezelfde stappen als in de methode display(). In plaats van de elementen af te drukken op het scherm, verhoog je de variabele die je hebt aangemaakt;
  • In de methode delete(), geef je de index als parameter door. Het is essentieel om de index te valideren om te verzekeren dat deze binnen het juiste bereik valt;
  • Als index == 0, werk je eenvoudig de referentie bij door head = head.next in te stellen;
  • Voer vervolgens bewerkingen uit met de for-lus om de gewenste index van het element te vinden;
  • Zodra het vereiste element is gevonden, voer je de volgende bewerking uit:
    node.next = node.next.next;;
  • Op deze manier verwijder je de referentie naar het verwijderde element, waardoor het effectief uit de lijst wordt verwijderd.

Als je de taak hebt voltooid, kun je de main-methode uitvoeren, waarin enkele tests voor je zijn voorzien.

Daarnaast kun je de unit tests in de map test uitvoeren om je oplossing te valideren.

  • Iteratief te werk gaan – bij het implementeren van de size()-methode, doorloop je de lijst net als bij display(), maar in plaats van waarden af te drukken, verhoog je een teller;
  • Let op randgevallen – controleer in de delete()-methode altijd of index == 0 om head correct bij te werken, en zorg ervoor dat de index binnen de grenzen valt voordat je doorgaat;
  • Werk koppelingen correct bij – bij het verwijderen van een node, werk je current.next = current.next.next bij om het element over te slaan, waardoor het effectief uit de lijst wordt verwijderd.
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();
    }
}
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 7

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

bookUitdaging: Implementatie van Size- en Delete-methoden in LinkedList

Veeg om het menu te tonen

Taak

Je hebt drie van de vier CRUD-operaties samen geïmplementeerd. In deze taak moet je twee methoden implementeren:

  • public int size();
  • public void delete(int index).

De opdracht staat op GitHub, dus je moet deze lokaal in je IDE implementeren.

Je ziet de oplossing van deze taak met opmerkingen over de implementatie.

Een korte handleiding om deze taak te voltooien:

  • Begin met de methode size(). Je moet eerst een variabele declareren om het aantal elementen in de lijst bij te houden, en vervolgens deze variabele simpelweg retourneren vanuit de methode;
  • In de methode size(), volg je dezelfde stappen als in de methode display(). In plaats van de elementen af te drukken op het scherm, verhoog je de variabele die je hebt aangemaakt;
  • In de methode delete(), geef je de index als parameter door. Het is essentieel om de index te valideren om te verzekeren dat deze binnen het juiste bereik valt;
  • Als index == 0, werk je eenvoudig de referentie bij door head = head.next in te stellen;
  • Voer vervolgens bewerkingen uit met de for-lus om de gewenste index van het element te vinden;
  • Zodra het vereiste element is gevonden, voer je de volgende bewerking uit:
    node.next = node.next.next;;
  • Op deze manier verwijder je de referentie naar het verwijderde element, waardoor het effectief uit de lijst wordt verwijderd.

Als je de taak hebt voltooid, kun je de main-methode uitvoeren, waarin enkele tests voor je zijn voorzien.

Daarnaast kun je de unit tests in de map test uitvoeren om je oplossing te valideren.

  • Iteratief te werk gaan – bij het implementeren van de size()-methode, doorloop je de lijst net als bij display(), maar in plaats van waarden af te drukken, verhoog je een teller;
  • Let op randgevallen – controleer in de delete()-methode altijd of index == 0 om head correct bij te werken, en zorg ervoor dat de index binnen de grenzen valt voordat je doorgaat;
  • Werk koppelingen correct bij – bij het verwijderen van een node, werk je current.next = current.next.next bij om het element over te slaan, waardoor het effectief uit de lijst wordt verwijderd.
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();
    }
}
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 7
some-alt