Sfida: Implementazione Dei Metodi Size e Delete in LinkedList
Compito
Hai implementato tre delle quattro operazioni CRUD insieme. In questo compito, devi implementare due metodi:
public int size();public void delete(int index).
L'assegnazione si trova su GitHub, quindi devi implementarla localmente nel tuo IDE.
Vedrai la soluzione di questo compito con commenti sull'implementazione.
Breve guida su come completare questo compito:
- Si consiglia di iniziare con il metodo
size(). Per prima cosa, è necessario dichiarare una variabile per tenere traccia del numero di elementi nella lista, quindi semplicemente restituire questa variabile dal metodo; - Nel metodo
size(), segui gli stessi passaggi del metododisplay(). Tuttavia, invece di stampare gli elementi a schermo, incrementa la variabile creata; - Nel metodo
delete(), passa l'indexcome parametro. È essenziale validare l'indice per assicurarsi che sia nell'intervallo corretto; - Se
index == 0, aggiorna semplicemente il riferimento impostandohead = head.next; - Successivamente, esegui operazioni con il ciclo
forper trovare l'indice desiderato dell'elemento; - Una volta trovato l'elemento richiesto, esegui la seguente operazione:
node.next = node.next.next;; - In questo modo, rimuoverai il riferimento all'elemento eliminato, eliminandolo effettivamente dalla lista.
Una volta terminato il compito, puoi eseguire il metodo main, dove sono forniti alcuni test.
Inoltre, puoi eseguire i test unitari presenti nella cartella test per validare la tua soluzione.
- Iterare con attenzione – durante l'implementazione del metodo
size(), attraversa la lista come indisplay(), ma invece di stampare i valori, incrementa un contatore; - Gestire i casi limite – nel metodo
delete(), controlla sempre seindex == 0per aggiornare correttamentehead, e assicurati che l'indice sia nei limiti prima di procedere; - Aggiornare correttamente i collegamenti – quando elimini un nodo, aggiorna
current.next = current.next.nextper saltare l'elemento, rimuovendolo effettivamente dalla lista.
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();
}
}
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Fantastico!
Completion tasso migliorato a 4
Sfida: Implementazione Dei Metodi Size e Delete in LinkedList
Scorri per mostrare il menu
Compito
Hai implementato tre delle quattro operazioni CRUD insieme. In questo compito, devi implementare due metodi:
public int size();public void delete(int index).
L'assegnazione si trova su GitHub, quindi devi implementarla localmente nel tuo IDE.
Vedrai la soluzione di questo compito con commenti sull'implementazione.
Breve guida su come completare questo compito:
- Si consiglia di iniziare con il metodo
size(). Per prima cosa, è necessario dichiarare una variabile per tenere traccia del numero di elementi nella lista, quindi semplicemente restituire questa variabile dal metodo; - Nel metodo
size(), segui gli stessi passaggi del metododisplay(). Tuttavia, invece di stampare gli elementi a schermo, incrementa la variabile creata; - Nel metodo
delete(), passa l'indexcome parametro. È essenziale validare l'indice per assicurarsi che sia nell'intervallo corretto; - Se
index == 0, aggiorna semplicemente il riferimento impostandohead = head.next; - Successivamente, esegui operazioni con il ciclo
forper trovare l'indice desiderato dell'elemento; - Una volta trovato l'elemento richiesto, esegui la seguente operazione:
node.next = node.next.next;; - In questo modo, rimuoverai il riferimento all'elemento eliminato, eliminandolo effettivamente dalla lista.
Una volta terminato il compito, puoi eseguire il metodo main, dove sono forniti alcuni test.
Inoltre, puoi eseguire i test unitari presenti nella cartella test per validare la tua soluzione.
- Iterare con attenzione – durante l'implementazione del metodo
size(), attraversa la lista come indisplay(), ma invece di stampare i valori, incrementa un contatore; - Gestire i casi limite – nel metodo
delete(), controlla sempre seindex == 0per aggiornare correttamentehead, e assicurati che l'indice sia nei limiti prima di procedere; - Aggiornare correttamente i collegamenti – quando elimini un nodo, aggiorna
current.next = current.next.nextper saltare l'elemento, rimuovendolo effettivamente dalla lista.
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();
}
}
Grazie per i tuoi commenti!