Udfordring: Implementering af Size- og Delete-metoder i LinkedList
Opgave
Du har implementeret tre ud af fire CRUD-operationer sammen. I denne opgave skal du implementere to metoder:
public int size();public void delete(int index).
Opgaven ligger på GitHub, så du skal implementere den lokalt i dit IDE.
Du vil se løsningen på denne opgave med kommentarer til implementeringen.
En kort vejledning til, hvordan du løser denne opgave:
- Det anbefales at starte med
size()-metoden. Først skal du deklarere en variabel til at holde styr på antallet af elementer i listen, og derefter blot returnere denne variabel fra metoden; - I
size()-metoden skal du følge de samme trin som idisplay()-metoden. Men i stedet for at udskrive elementerne på skærmen, skal du inkrementere den variabel, du har oprettet; - I
delete()-metoden skal du sendeindexsom parameter. Det er vigtigt at validere indekset for at sikre, at det er inden for det korrekte interval; - Hvis
index == 0, skal du blot opdatere referencen ved at sættehead = head.next; - Udfør derefter operationer med en
for-løkke for at finde det ønskede indeks for elementet; - Når det nødvendige element er fundet, skal du udføre følgende operation:
node.next = node.next.next;; - På denne måde fjerner du referencen til det slettede element og sletter det dermed fra listen.
Når du har afsluttet opgaven, kan du køre main-metoden, hvor der er nogle tests til rådighed for dig.
Derudover kan du køre enhedstestene, der ligger i test-mappen, for at validere din løsning.
- Iterér omhyggeligt – når du implementerer
size()-metoden, skal du gennemløbe listen ligesom idisplay(), men i stedet for at udskrive værdier, skal du inkrementere en tæller; - Vær opmærksom på grænsetilfælde – i
delete()-metoden skal du altid tjekke, omindex == 0for korrekt at opdaterehead, og sikre at indekset er inden for grænserne, før du fortsætter; - Opdater referencer korrekt – når du sletter en node, skal du opdatere
current.next = current.next.nextfor at springe elementet over og dermed fjerne det fra listen.
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();
}
}
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Fantastisk!
Completion rate forbedret til 4
Udfordring: Implementering af Size- og Delete-metoder i LinkedList
Stryg for at vise menuen
Opgave
Du har implementeret tre ud af fire CRUD-operationer sammen. I denne opgave skal du implementere to metoder:
public int size();public void delete(int index).
Opgaven ligger på GitHub, så du skal implementere den lokalt i dit IDE.
Du vil se løsningen på denne opgave med kommentarer til implementeringen.
En kort vejledning til, hvordan du løser denne opgave:
- Det anbefales at starte med
size()-metoden. Først skal du deklarere en variabel til at holde styr på antallet af elementer i listen, og derefter blot returnere denne variabel fra metoden; - I
size()-metoden skal du følge de samme trin som idisplay()-metoden. Men i stedet for at udskrive elementerne på skærmen, skal du inkrementere den variabel, du har oprettet; - I
delete()-metoden skal du sendeindexsom parameter. Det er vigtigt at validere indekset for at sikre, at det er inden for det korrekte interval; - Hvis
index == 0, skal du blot opdatere referencen ved at sættehead = head.next; - Udfør derefter operationer med en
for-løkke for at finde det ønskede indeks for elementet; - Når det nødvendige element er fundet, skal du udføre følgende operation:
node.next = node.next.next;; - På denne måde fjerner du referencen til det slettede element og sletter det dermed fra listen.
Når du har afsluttet opgaven, kan du køre main-metoden, hvor der er nogle tests til rådighed for dig.
Derudover kan du køre enhedstestene, der ligger i test-mappen, for at validere din løsning.
- Iterér omhyggeligt – når du implementerer
size()-metoden, skal du gennemløbe listen ligesom idisplay(), men i stedet for at udskrive værdier, skal du inkrementere en tæller; - Vær opmærksom på grænsetilfælde – i
delete()-metoden skal du altid tjekke, omindex == 0for korrekt at opdaterehead, og sikre at indekset er inden for grænserne, før du fortsætter; - Opdater referencer korrekt – når du sletter en node, skal du opdatere
current.next = current.next.nextfor at springe elementet over og dermed fjerne det fra listen.
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();
}
}
Tak for dine kommentarer!