Uitdaging: 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 methodedisplay(). 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 deindexals 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 doorhead = head.nextin 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 bijdisplay(), maar in plaats van waarden af te drukken, verhoog je een teller; - Let op randgevallen – controleer in de
delete()-methode altijd ofindex == 0omheadcorrect 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.nextbij 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();
}
}
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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?
Geweldig!
Completion tarief verbeterd naar 4
Uitdaging: 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 methodedisplay(). 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 deindexals 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 doorhead = head.nextin 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 bijdisplay(), maar in plaats van waarden af te drukken, verhoog je een teller; - Let op randgevallen – controleer in de
delete()-methode altijd ofindex == 0omheadcorrect 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.nextbij 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();
}
}
Bedankt voor je feedback!