Завдання: Реалізація Методів Size та Delete у LinkedList
Завдання
Ви разом реалізували три з чотирьох CRUD-операцій. У цьому завданні потрібно реалізувати два методи:
public int size();public void delete(int index).
Завдання розміщене на GitHub, тому реалізуйте його локально у вашій IDE.
Ви побачите розв'язання цього завдання з коментарями до реалізації.
Коротка інструкція щодо виконання цього завдання:
- Рекомендую почати з методу
size(). Спочатку потрібно оголосити змінну для підрахунку кількості елементів у списку, а потім просто повертати цю змінну з методу; - У методі
size()дотримуйтесь тих самих кроків, що й у методіdisplay(). Однак замість виведення елементів на екран, збільшуйте створену вами змінну; - У методі
delete()передайтеindexяк параметр. Обов'язково перевіряйте індекс, щоб переконатися, що він знаходиться у допустимому діапазоні; - Якщо
index == 0, просто оновіть посилання, встановившиhead = head.next; - Далі виконайте операції з використанням циклу
for, щоб знайти потрібний індекс елемента; - Коли потрібний елемент знайдено, виконайте таку операцію:
node.next = node.next.next;; - Таким чином ви видалите посилання на видалений елемент, фактично видаливши його зі списку.
Після завершення завдання ви можете запустити метод main, де для вас підготовлені деякі тести.
Додатково ви можете запустити модульні тести, які знаходяться у папці test, щоб перевірити своє рішення.
- Ітеруйте уважно – при реалізації методу
size()проходьте список так само, як уdisplay(), але замість виведення значень збільшуйте лічильник; - Звертайте увагу на крайові випадки – у методі
delete()завжди перевіряйте, чиindex == 0, щоб правильно оновитиhead, і переконайтеся, що індекс знаходиться в межах допустимого перед виконанням операцій; - Коректно оновлюйте посилання – при видаленні вузла оновіть
current.next = current.next.next, щоб обійти елемент, фактично видаливши його зі списку.
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();
}
}
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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?
Чудово!
Completion показник покращився до 4
Завдання: Реалізація Методів Size та Delete у LinkedList
Свайпніть щоб показати меню
Завдання
Ви разом реалізували три з чотирьох CRUD-операцій. У цьому завданні потрібно реалізувати два методи:
public int size();public void delete(int index).
Завдання розміщене на GitHub, тому реалізуйте його локально у вашій IDE.
Ви побачите розв'язання цього завдання з коментарями до реалізації.
Коротка інструкція щодо виконання цього завдання:
- Рекомендую почати з методу
size(). Спочатку потрібно оголосити змінну для підрахунку кількості елементів у списку, а потім просто повертати цю змінну з методу; - У методі
size()дотримуйтесь тих самих кроків, що й у методіdisplay(). Однак замість виведення елементів на екран, збільшуйте створену вами змінну; - У методі
delete()передайтеindexяк параметр. Обов'язково перевіряйте індекс, щоб переконатися, що він знаходиться у допустимому діапазоні; - Якщо
index == 0, просто оновіть посилання, встановившиhead = head.next; - Далі виконайте операції з використанням циклу
for, щоб знайти потрібний індекс елемента; - Коли потрібний елемент знайдено, виконайте таку операцію:
node.next = node.next.next;; - Таким чином ви видалите посилання на видалений елемент, фактично видаливши його зі списку.
Після завершення завдання ви можете запустити метод main, де для вас підготовлені деякі тести.
Додатково ви можете запустити модульні тести, які знаходяться у папці test, щоб перевірити своє рішення.
- Ітеруйте уважно – при реалізації методу
size()проходьте список так само, як уdisplay(), але замість виведення значень збільшуйте лічильник; - Звертайте увагу на крайові випадки – у методі
delete()завжди перевіряйте, чиindex == 0, щоб правильно оновитиhead, і переконайтеся, що індекс знаходиться в межах допустимого перед виконанням операцій; - Коректно оновлюйте посилання – при видаленні вузла оновіть
current.next = current.next.next, щоб обійти елемент, фактично видаливши його зі списку.
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();
}
}
Дякуємо за ваш відгук!