Haaste: Size- ja Delete-metodien Toteuttaminen LinkedListissä
Tehtävä
Olet toteuttanut kolme neljästä CRUD-toiminnosta. Tässä tehtävässä sinun tulee toteuttaa kaksi metodia:
public int size();public void delete(int index).
Tehtävä löytyy GitHubista, joten toteuta se paikallisesti IDE:ssäsi.
Näet tämän tehtävän ratkaisun kommenttien kera toteutuksen jälkeen.
Lyhyt ohje tehtävän suorittamiseen:
- Suosittelen aloittamaan
size()-metodista. Ensin tulee määritellä muuttuja, joka seuraa alkioiden määrää listassa, ja palauttaa tämä muuttuja metodista; size()-metodissa seuraa samoja vaiheita kuindisplay()-metodissa. Tulostamisen sijaan kasvata määrittelemääsi muuttujaa;delete()-metodissa välitäindexparametrina. On tärkeää tarkistaa indeksin oikeellisuus ennen jatkamista;- Jos
index == 0, päivitä viittaus asettamallahead = head.next; - Seuraavaksi käytä
for-silmukkaa löytääksesi halutun indeksin alkion; - Kun oikea alkio löytyy, suorita seuraava operaatio:
node.next = node.next.next;; - Näin poistat viittauksen poistettavaan alkioon, jolloin se poistuu listasta.
Kun olet suorittanut tehtävän, voit ajaa main-metodin, jossa on valmiita testejä.
Voit lisäksi ajaa yksikkötestit test-kansiossa varmistaaksesi ratkaisusi.
- Iteroi huolellisesti – toteuttaessasi
size()-metodia, käy lista läpi kutendisplay()-metodissa, mutta tulostamisen sijaan kasvata laskuria; - Huomioi poikkeustapaukset –
delete()-metodissa tarkista aina, onkoindex == 0päivittääksesiheadoikein, ja varmista että indeksi on sallituissa rajoissa ennen jatkamista; - Päivitä viittaukset oikein – kun poistat solmun, päivitä
current.next = current.next.nextohittaaksesi alkion, jolloin se poistuu listasta.
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();
}
}
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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?
Mahtavaa!
Completion arvosana parantunut arvoon 4
Haaste: Size- ja Delete-metodien Toteuttaminen LinkedListissä
Pyyhkäise näyttääksesi valikon
Tehtävä
Olet toteuttanut kolme neljästä CRUD-toiminnosta. Tässä tehtävässä sinun tulee toteuttaa kaksi metodia:
public int size();public void delete(int index).
Tehtävä löytyy GitHubista, joten toteuta se paikallisesti IDE:ssäsi.
Näet tämän tehtävän ratkaisun kommenttien kera toteutuksen jälkeen.
Lyhyt ohje tehtävän suorittamiseen:
- Suosittelen aloittamaan
size()-metodista. Ensin tulee määritellä muuttuja, joka seuraa alkioiden määrää listassa, ja palauttaa tämä muuttuja metodista; size()-metodissa seuraa samoja vaiheita kuindisplay()-metodissa. Tulostamisen sijaan kasvata määrittelemääsi muuttujaa;delete()-metodissa välitäindexparametrina. On tärkeää tarkistaa indeksin oikeellisuus ennen jatkamista;- Jos
index == 0, päivitä viittaus asettamallahead = head.next; - Seuraavaksi käytä
for-silmukkaa löytääksesi halutun indeksin alkion; - Kun oikea alkio löytyy, suorita seuraava operaatio:
node.next = node.next.next;; - Näin poistat viittauksen poistettavaan alkioon, jolloin se poistuu listasta.
Kun olet suorittanut tehtävän, voit ajaa main-metodin, jossa on valmiita testejä.
Voit lisäksi ajaa yksikkötestit test-kansiossa varmistaaksesi ratkaisusi.
- Iteroi huolellisesti – toteuttaessasi
size()-metodia, käy lista läpi kutendisplay()-metodissa, mutta tulostamisen sijaan kasvata laskuria; - Huomioi poikkeustapaukset –
delete()-metodissa tarkista aina, onkoindex == 0päivittääksesiheadoikein, ja varmista että indeksi on sallituissa rajoissa ennen jatkamista; - Päivitä viittaukset oikein – kun poistat solmun, päivitä
current.next = current.next.nextohittaaksesi alkion, jolloin se poistuu listasta.
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();
}
}
Kiitos palautteestasi!