Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Завдання: Реалізація Методів Size та Delete у LinkedList | Основні Структури Даних у Java
Структури Даних Java

bookЗавдання: Реалізація Методів 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();
    }
}
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 7

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

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?

bookЗавдання: Реалізація Методів 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();
    }
}
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 7
some-alt