Utmaning: 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 metodendisplay(). Men istället för att skriva ut elementen på skärmen, öka variabeln du skapade; - I metoden
delete(), skickaindexsom 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ättahead = 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 idisplay(), men istället för att skriva ut värden, öka en räknare; - Var uppmärksam på specialfall – i metoden
delete(), kontrollera alltid omindex == 0för att uppdateraheadkorrekt, 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.nextfö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();
}
}
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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?
Fantastiskt!
Completion betyg förbättrat till 4
Utmaning: 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 metodendisplay(). Men istället för att skriva ut elementen på skärmen, öka variabeln du skapade; - I metoden
delete(), skickaindexsom 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ättahead = 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 idisplay(), men istället för att skriva ut värden, öka en räknare; - Var uppmärksam på specialfall – i metoden
delete(), kontrollera alltid omindex == 0för att uppdateraheadkorrekt, 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.nextfö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();
}
}
Tack för dina kommentarer!