Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Implementering av Size- och Delete-metoder i LinkedList | Grundläggande Datastrukturer i Java
Java Datastrukturer

bookUtmaning: Implementering av Size- och Delete-metoder i LinkedList

Uppgift

Du har implementerat tre av fyra CRUD-operationer tillsammans. I denna uppgift behöver du implementera två metoder:

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

Uppgiften finns på GitHub, så du behöver implementera den lokalt i din IDE.

Du kommer att se lösningen på denna uppgift med kommentarer om implementationen.

En kort guide för att slutföra denna uppgift:

  • Det rekommenderas att börja med metoden size(). Först behöver du deklarera en variabel för att hålla reda på antalet element i listan, och sedan helt enkelt returnera denna variabel från metoden;
  • I metoden size(), följ samma steg som i metoden display(). Men istället för att skriva ut elementen på skärmen, öka variabeln du skapade;
  • I metoden delete(), skicka index som en parameter. Det är viktigt att validera indexet för att säkerställa att det är inom korrekt intervall;
  • Om index == 0, uppdatera helt enkelt referensen genom att sätta head = head.next;
  • Utför därefter operationer med en for-loop för att hitta önskat index för elementet;
  • När det önskade elementet har hittats, utför följande operation:
    node.next = node.next.next;;
  • På detta sätt tar du bort referensen till det borttagna elementet, vilket effektivt tar bort det från listan.

När du är klar med uppgiften kan du köra metoden main, där några tester finns tillgängliga för dig.

Dessutom kan du köra enhetstesterna som finns i mappen test för att validera din lösning.

  • Iterera noggrant – när du implementerar metoden size(), traversera listan precis som i display(), men istället för att skriva ut värden, öka en räknare;
  • Var uppmärksam på specialfall – i metoden delete(), kontrollera alltid om index == 0 för att uppdatera head korrekt, och säkerställ att index är inom giltigt intervall innan du fortsätter;
  • Uppdatera länkar korrekt – när du tar bort en nod, uppdatera current.next = current.next.next för att hoppa över elementet, vilket effektivt tar bort det från listan.
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();
    }
}
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 7

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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?

bookUtmaning: Implementering av Size- och Delete-metoder i LinkedList

Svep för att visa menyn

Uppgift

Du har implementerat tre av fyra CRUD-operationer tillsammans. I denna uppgift behöver du implementera två metoder:

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

Uppgiften finns på GitHub, så du behöver implementera den lokalt i din IDE.

Du kommer att se lösningen på denna uppgift med kommentarer om implementationen.

En kort guide för att slutföra denna uppgift:

  • Det rekommenderas att börja med metoden size(). Först behöver du deklarera en variabel för att hålla reda på antalet element i listan, och sedan helt enkelt returnera denna variabel från metoden;
  • I metoden size(), följ samma steg som i metoden display(). Men istället för att skriva ut elementen på skärmen, öka variabeln du skapade;
  • I metoden delete(), skicka index som en parameter. Det är viktigt att validera indexet för att säkerställa att det är inom korrekt intervall;
  • Om index == 0, uppdatera helt enkelt referensen genom att sätta head = head.next;
  • Utför därefter operationer med en for-loop för att hitta önskat index för elementet;
  • När det önskade elementet har hittats, utför följande operation:
    node.next = node.next.next;;
  • På detta sätt tar du bort referensen till det borttagna elementet, vilket effektivt tar bort det från listan.

När du är klar med uppgiften kan du köra metoden main, där några tester finns tillgängliga för dig.

Dessutom kan du köra enhetstesterna som finns i mappen test för att validera din lösning.

  • Iterera noggrant – när du implementerar metoden size(), traversera listan precis som i display(), men istället för att skriva ut värden, öka en räknare;
  • Var uppmärksam på specialfall – i metoden delete(), kontrollera alltid om index == 0 för att uppdatera head korrekt, och säkerställ att index är inom giltigt intervall innan du fortsätter;
  • Uppdatera länkar korrekt – när du tar bort en nod, uppdatera current.next = current.next.next för att hoppa över elementet, vilket effektivt tar bort det från listan.
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();
    }
}
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 7
some-alt