Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Implementierung der Methoden Size und Delete in LinkedList | Grundlegende Datenstrukturen in Java
Java Datenstrukturen

bookHerausforderung: Implementierung der Methoden Size und Delete in LinkedList

Aufgabe

Sie haben drei von vier CRUD-Operationen gemeinsam implementiert. In dieser Aufgabe sollen Sie zwei Methoden implementieren:

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

Die Aufgabe befindet sich auf GitHub, daher müssen Sie sie lokal in Ihrer IDE umsetzen.

Die Lösung dieser Aufgabe mit Kommentaren zur Implementierung wird Ihnen angezeigt.

Eine kurze Anleitung zur Bearbeitung dieser Aufgabe:

  • Es empfiehlt sich, mit der Methode size() zu beginnen. Zuerst sollten Sie eine Variable deklarieren, um die Anzahl der Elemente in der Liste zu verfolgen, und anschließend diese Variable einfach aus der Methode zurückgeben;
  • In der Methode size() gehen Sie nach den gleichen Schritten wie in der Methode display() vor. Anstatt jedoch die Elemente auf dem Bildschirm auszugeben, inkrementieren Sie die von Ihnen erstellte Variable;
  • In der Methode delete() wird der index als Parameter übergeben. Es ist wichtig, den Index zu validieren, um sicherzustellen, dass er im korrekten Bereich liegt;
  • Falls index == 0, aktualisieren Sie einfach die Referenz, indem Sie head = head.next setzen;
  • Führen Sie anschließend mit einer for-Schleife Operationen durch, um den gewünschten Index des Elements zu finden;
  • Sobald das benötigte Element gefunden wurde, führen Sie folgende Operation aus:
    node.next = node.next.next;;
  • Auf diese Weise entfernen Sie die Referenz auf das gelöschte Element und löschen es somit effektiv aus der Liste.

Nachdem Sie die Aufgabe abgeschlossen haben, können Sie die main-Methode ausführen, in der einige Tests für Sie bereitgestellt sind.

Zusätzlich können Sie die Unit-Tests im Ordner test ausführen, um Ihre Lösung zu validieren.

  • Sorgfältiges Iterieren – bei der Implementierung der Methode size() die Liste wie bei display() durchlaufen, jedoch anstelle der Ausgabe der Werte einen Zähler inkrementieren;
  • Beachtung von Sonderfällen – in der Methode delete() stets prüfen, ob index == 0 gilt, um head korrekt zu aktualisieren, und sicherstellen, dass der Index innerhalb der Grenzen liegt, bevor Sie fortfahren;
  • Korrektes Aktualisieren der Verknüpfungen – beim Löschen eines Knotens current.next = current.next.next setzen, um das Element zu überspringen und es somit effektiv aus der Liste zu entfernen.
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();
    }
}
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 7

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

bookHerausforderung: Implementierung der Methoden Size und Delete in LinkedList

Swipe um das Menü anzuzeigen

Aufgabe

Sie haben drei von vier CRUD-Operationen gemeinsam implementiert. In dieser Aufgabe sollen Sie zwei Methoden implementieren:

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

Die Aufgabe befindet sich auf GitHub, daher müssen Sie sie lokal in Ihrer IDE umsetzen.

Die Lösung dieser Aufgabe mit Kommentaren zur Implementierung wird Ihnen angezeigt.

Eine kurze Anleitung zur Bearbeitung dieser Aufgabe:

  • Es empfiehlt sich, mit der Methode size() zu beginnen. Zuerst sollten Sie eine Variable deklarieren, um die Anzahl der Elemente in der Liste zu verfolgen, und anschließend diese Variable einfach aus der Methode zurückgeben;
  • In der Methode size() gehen Sie nach den gleichen Schritten wie in der Methode display() vor. Anstatt jedoch die Elemente auf dem Bildschirm auszugeben, inkrementieren Sie die von Ihnen erstellte Variable;
  • In der Methode delete() wird der index als Parameter übergeben. Es ist wichtig, den Index zu validieren, um sicherzustellen, dass er im korrekten Bereich liegt;
  • Falls index == 0, aktualisieren Sie einfach die Referenz, indem Sie head = head.next setzen;
  • Führen Sie anschließend mit einer for-Schleife Operationen durch, um den gewünschten Index des Elements zu finden;
  • Sobald das benötigte Element gefunden wurde, führen Sie folgende Operation aus:
    node.next = node.next.next;;
  • Auf diese Weise entfernen Sie die Referenz auf das gelöschte Element und löschen es somit effektiv aus der Liste.

Nachdem Sie die Aufgabe abgeschlossen haben, können Sie die main-Methode ausführen, in der einige Tests für Sie bereitgestellt sind.

Zusätzlich können Sie die Unit-Tests im Ordner test ausführen, um Ihre Lösung zu validieren.

  • Sorgfältiges Iterieren – bei der Implementierung der Methode size() die Liste wie bei display() durchlaufen, jedoch anstelle der Ausgabe der Werte einen Zähler inkrementieren;
  • Beachtung von Sonderfällen – in der Methode delete() stets prüfen, ob index == 0 gilt, um head korrekt zu aktualisieren, und sicherstellen, dass der Index innerhalb der Grenzen liegt, bevor Sie fortfahren;
  • Korrektes Aktualisieren der Verknüpfungen – beim Löschen eines Knotens current.next = current.next.next setzen, um das Element zu überspringen und es somit effektiv aus der Liste zu entfernen.
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();
    }
}
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 7
some-alt