linked list java linked list implementation java examples
Цей посібник пояснює, що таке структура даних зв’язаного списку в Java та як створити, ініціалізувати, впровадити, обернути, змінити та відсортувати пов’язаний список Java:
У Java LinkedList - це структура даних, яка зберігає елементи в несуміжних місцях. Це лінійна структура даних.
Кожен елемент даних називається «Вузол», і кожен вузол має частину даних та адресу. Адресна частина зберігає посилання на наступний вузол у LinkedList.
=> Завітайте сюди, щоб побачити навчальну серію Java для всіх.
Що ви дізнаєтесь:
- LinkedList в Java
- Клас Java LinkedList
- Як створити пов'язаний список на Java
- Впровадження зв’язаного списку в Java
- Обернути / роздрукувати зв’язаний список на Java
- Методи LinkedList
- Зворотний зв’язаний список у Java
- Сортувати зв’язаний список на Java
- Видалити дублікати
- Круговий зв’язаний список на Java
- Java 8 LinkedList
- Часті запитання
- Висновок
LinkedList в Java
Нижче наведено загальний макет LinkedList:
Як показано у наведеному вище поданні LinkedList, кожен елемент у LinkedList є “Вузлом”. Кожен вузол складається з двох частин, перша частина зберігає дані, а друга частина містить посилання або вказівник або адресу наступного вузла в LinkedList.
що таке регресійне тестування в qa
Ця домовленість необхідна, оскільки дані у LinkedList зберігаються у несуміжних місцях, на відміну від Arrays.
“Голова” LinkedList - це вказівник, що містить адресу першого елемента LinkedList. Останній вузол у LinkedList - це хвіст. Як показано на малюнку вище, для адресної частини останнього вузла в LinkedList встановлено значення «Null», що вказує на кінець LinkedList.
Наведена діаграма представляє Список, що має єдине зв’язування ”, Що зберігає адресу лише наступного вузла у LinkedList.
Існує ще одна версія, відома як “ Список подвійних зв’язків ”, Кожен вузол якого складається з трьох частин:
- Адреса, посилання або вказівник на попередній елемент у LinkedList.
- Частина даних
- Адреса, посилання або вказівник на наступний елемент у LinkedList.
Попередній адресі першого елемента в LinkedList буде встановлено значення Null, тоді як для наступного вказівника Last element у LinkedList встановлено значення Null.
Представлення подвійно пов'язаного списку:
Як показано у наведеному вище поданні, кожен вузол у подвійно зв’язаному списку має вказівники на свій попередній та наступний вузол (таким чином, представлений без стрілок). Попередній вказівник першого вузла вказує на нуль, тоді як наступний вказівник останнього вузла вказує на нуль.
У цьому посібнику LinkedList ми матимемо справу здебільшого зі списком, що має єдиний зв’язок. Ми обговоримо подвійно пов’язаний список у нашому наступному уроці.
Клас Java LinkedList
На Java пов'язаний список реалізується за допомогою “ LinkedList ”Клас. Цей клас належить до “ java.util ”Пакет. Клас LinkedList реалізує інтерфейси List і Deque і успадковує клас AbstractList.
Нижче наведена ієрархія класу класу LinkedList.
Наведена схема показує ієрархію класу LinkedList. Як показано, клас LinkedList реалізує інтерфейси List і Deque.
Як уже зазначалося, клас LinkedList є частиною “ java.util ”Пакет. Отже, ви повинні мати можливість використовувати клас LinkedList у своїй програмі, включивши одне з наступних тверджень у свою програму.
import java.util.*;
Або
import java.util.LinkedList;
Отже, виходячи з наведеної вище ієрархії, типовим визначенням класу LinkedList є наступне:
public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, Serializable
Нижче наведено деякі характеристики класу LinkedList, які слід пам’ятати:
- Цей клас не синхронізований.
- Це дозволяє дублювати значення.
- Зберігає порядок вставки.
- Оскільки елементи не потрібно переміщувати під час руху, маніпулювання елементами в ньому відбувається швидше.
- Цей клас можна використовувати для реалізації стека, черги та списку.
Як створити пов'язаний список на Java
Перш ніж переходити до створення пов'язаного списку на Java, давайте спочатку обговоримо вузол пов'язаного списку на Java.
Як вже обговорювалося, пов'язаний список складається з вузлів. Таким чином, в Java ми можемо представити LinkedList як клас, а його Node - як окремий клас. Отже, цей клас матиме посилання на тип Node.
Це показано нижче:
class LinkedList { Node head; // list head //node - linkedlist class Node { int data; Node next; Node(int d) { data = d; } //constructor to create a new node } }
Для створення об'єкта типу LinkedList існує два основних конструктори, як показано нижче:
# 1) LinkedList ()
Загальним синтаксисом цього конструктора є:
LinkedList linkedList = new LinkedList();
Наведене вище твердження створює порожній LinkedList.
Наприклад,
LinkedList l_list = new LinkedList();
Це створить порожній зв’язаний список з назвою l_list.
# 2) LinkedList (Колекція c)
Загальний синтаксис:
LinkedList linkedList = new LinkedList (Collection c);
Наведений вище оператор створює LinkedList з елементами з колекції c як початковими елементами.
Як і інші структури даних списку, які ми вже бачили, зв'язаний список також може бути ініціалізований за допомогою методу add, методу Arrays.asList () або за допомогою конструктора з колекцією як аргументу.
Впровадження зв’язаного списку в Java
Нижче наведено простий приклад структури даних LinkedList в Java. У цьому прикладі реалізації ми використовуватимемо метод add та метод asList для ініціалізації об’єктів LinkedList.
import java.util.*; public class Main{ public static void main(String() args) { //create a LinkedList object and initialize it with Array elements converted to list LinkedList intList = new LinkedList<>(Arrays.asList(10,20,30,40,50)); //print the LinkedList just created System.out.println('Contents of first LinkedList: ' + intList); //create an empty list LinkedList colorsList = new LinkedList<>(); //add elements to the linkedList using add method. colorsList.add('Red'); colorsList.add('Green'); colorsList.add('Blue'); colorsList.add('Cyan'); colorsList.add('Magenta'); // print the LinkedList System.out.println('
Contents of second LinkedList: ' + colorsList); } }
Вихід:
Зміст першого LinkedList: (10, 20, 30, 40, 50)
Зміст другого LinkedList: (Червоний, Зелений, Синій, Блакитний, Пурпуровий)
Наведена вище програма показує створення та ініціалізацію LinkedList. Спочатку ми створюємо LinkedList типу Integer і надаємо масив цілих чисел, перетворених у список, використовуючи метод asList як початкові значення для LinkedList.
Далі ми створюємо порожній LinkedList типу String, а потім, використовуючи метод add, додаємо значення до LinkedList.
Нарешті, ми відображаємо обидва об’єкти LinkedList у вигляді рядка.
Обернути / роздрукувати зв’язаний список на Java
Щоб надрукувати вміст або виконати будь-які операції з елементами LinkedList, вам потрібно здійснити обхід його елементів. Ми вже бачили ці методи в наших попередніх підручниках. У цьому розділі ми обговоримо приклади кожного з них щодо LinkedList.
Використання for циклу
import java.util.LinkedList; class Main { public static void main(String() args) { // Create a LinkedList and initialize it LinkedList colorList = new LinkedList<>(); colorList.add('Red'); colorList.add('Green'); colorList.add('Blue'); // Using for loop,print the contents of the LinkedList System.out.println('LinkedList elements using for loop:'); for(int i=0; i Вихід:
Елементи LinkedList, що використовують цикл for:
Червоний Зелений Синій

Використання forEach Loop
import java.util.LinkedList; class Main { public static void main(String() args) { // Create a LinkedList and initialize it LinkedList colorList = new LinkedList<>(); colorList.add('Red'); colorList.add('Green'); colorList.add('Blue'); // Using forEach loop,print the contents of the LinkedList System.out.println('LinkedList elements using forEach loop:'); for(String color:colorList) { System.out.print(color + ' '); } } }
Вихід:
Елементи LinkedList, що використовують цикл forEach:
Червоний Зелений Синій

Використання Iterator
import java.util.*; public class Main{ public static void main(String args()){ //declare a LinkedList object LinkedList l_list=new LinkedList(); //Add elements to LinkedList l_list.add('Red'); l_list.add('Green'); l_list.add('Blue'); l_list.add('Yellow'); //declare an iterator for the LinkedList Iterator itr=l_list.iterator(); System.out.println('The contents of Linked List:'); //Iterate through the LinkedList using Iterator and print its elements while(itr.hasNext()){ System.out.print(itr.next() + ' '); } } }
Вихід:
Зміст пов'язаного списку:
Червоний Зелений Синій Жовтий
тестування whitebox та blackbox на прикладі

Методи LinkedList
Клас LinkedList надає API, який підтримує різні методи маніпулювання списком пов'язаних. Ми надали табличну таблицю методів у API LinkedList нижче.
Основні операції / методи ми обговоримо в наступному розділі.
Метод Прототип Опис Ясно void clear () Видаляє всі елементи зі списку. Додати логічне додавання (E e) Додайте вказаний елемент до LinkedList void add (індекс int, елемент E) Додайте елемент за вказаним індексом у LinkedList AddAll boolean addAll (Колекція c) Додає елементи даної колекції c в кінці LinkedList. boolean addAll (індекс int, колекція c) Додає елементи даної колекції c за вказаним індексом у LinkedList addFirst void addFirst (E e) Додайте даний елемент як перший елемент до LinkedList. addLast void addLast (E e) Додайте даний елемент у кінці списку. Клон Клон об'єкта () Робить неглибоку копію LinkedList Містить Логічне містить (Об'єкт o) Перевіряє, чи містить список вказані елементи; якщо так, повертається true. спаднийIterator Ітератор за спаданням Ітератор () Повертає зворотно упорядкований ітератор для LinkedList. Стихія Е-елемент () Повертає елемент на початку списку. Отримати E get (індекс int) Отримує елемент за вказаним індексом. getFirst E getFirst () Отримує перший елемент у LinkedList. getLast E getLast () Отримує останній елемент у LinkedList. indexOf Int indexOf (Об'єкт o) Знайдіть індекс першого входження даних елементів у список і поверніть індекс. -1, якщо елемент не знайдено. lastIndexOf Int lastIndexOf (Об'єкт o) Повертає позицію останнього входження даного елемента в LinkedList; -1, якщо даний елемент відсутній listIterator ListIterator listIterator (індекс int) Повертає listIterator із зазначеного індексу у пов'язаному списку. Пропозиція логічна пропозиція (E e) Додає даний елемент як останній елемент (хвіст) у LinkedList. пропозиціяПерша Булева пропозиціяFirst (E e) Додає даний елемент як перший елемент у LinkedList. пропозиціяОстанній Логічна пропозиціяОстанній (E e) Додайте даний елемент e в кінці LinkedList. Зазирнути E peek () Повертає заголовок списку, не видаляючи його. заглянути E peekFirst () Повертає перший елемент у списку. повертає null, якщо список порожній. peekОстанній E peekLast () Повертає останній елемент або нуль, якщо список порожній. Він не видаляє елемент. Опитування Електронне опитування () Повертає заголовок LinkedList, а також видаляє його. опитуванняПерше E опитуванняПерший () Повертає та видаляє перший елемент у списку; повертає null, якщо список порожній. опитуванняОстанній E опитуванняОстанній () Повертає та видаляє останній елемент у списку; повертає null, якщо список порожній. Поп E поп () Вискакує елемент із стекового представлення LinkedList. Натисніть Порожній поштовх (E e) Підштовхує або вставляє елемент у представлення стеку LinkedList. Видалити E вилучити () Видаляє та повертає заголовок LinkedList. E видалити (індекс int) Видаляє елемент із зазначеним індексом із LinkedList. логічне видалення (Об'єкт o) Видаляє перше входження даного елемента з LinkedList. видалитиПерший E removeFirst () Повертає та видаляє перший елемент зі списку. removeFirstOccurence boolean removeFirstOccurrence (Об'єкт o) Видаляє перше входження даного елемента зі списку під час обходу списку з голови до хвоста. removeLast E removeLast () Повертає останній елемент у LinkedList, а також видаляє його. removeLastOccurence boolean removeLastOccurrence (Об'єкт o) Видаляє останнє входження даного елемента з LinkedList при переході від голови до хвоста Встановити E набір (індекс int, елемент E) Встановлює даний елемент за вказаним індексом. Замінює поточний елемент на новий. Розмір Внутрішній розмір () Повертає розмір або кількість елементів у LinkedList toArray Об'єкт () toArray () Перетворює LinkedList в масив, що містить усі елементи списку у належній послідовності T () доArray (T () a) Перетворює LinkedList у масив із типом виконання, таким же, як аргумент a.
Наведена нижче програма Java демонструє різні методи, які ми перерахували вище.
import java.util.*; public class Main { public static void main(String args()) { //create a linked list LinkedList l_list = new LinkedList(); // Add elements to linkedList using various add methods l_list.add('B'); l_list.add('C'); l_list.addLast('G'); l_list.addFirst('A'); l_list.add(3, 'D'); l_list.add('E'); l_list.add('F'); //print the linkedList System.out.println('Linked list : ' + l_list); //Create and initialize an ArrayList ArrayList aList = new ArrayList<>(); aList.add('H'); aList.add('I'); //add the ArrayList to linkedList using addAll method l_list.addAll(aList); //print the linkedList System.out.println('Linked list after adding ArrayList contents: ' + l_list); // use various remove methods to remove elements from linkedList l_list.remove('B'); l_list.remove(3); l_list.removeFirst(); l_list.removeLast(); //print the altered list System.out.println('Linked list after deletion: ' + l_list); // use contains method to check for an element in the linkedList boolean ret_value = l_list.contains('G'); //print the results of contains method if(ret_value) System.out.println('List contains the element 'G' '); else System.out.println('List doesn't contain the element 'G''); // use size methods to return Number of elements in the linked list int size = l_list.size(); System.out.println('Size of linked list = ' + size); // Get and set elements from linked list Object element = l_list.get(3); System.out.println('Element returned by get() : ' + element); l_list.set(3, 'J'); System.out.println('Linked list after change : ' + l_list); //convert linkedList to Array using toArray methods String () list_array = l_list.toArray(new String(l_list.size())); System.out.println('Array obtained from linked List:' + Arrays.toString(list_array)); } }
Вихід:
Пов’язаний список: (A, B, C, D, G, E, F)
Зв’язаний список після додавання вмісту ArrayList: (A, B, C, D, G, E, F, H, I)
Зв’язаний список після видалення: (C, D, E, F, H)
Список не містить елемента 'G'
Розмір пов'язаного списку = 5
Елемент повертається методом get (): F
Зв’язаний список після зміни: (C, D, E, J, H)
Масив, отриманий зі зв’язаного списку: (C, D, E, J, H)

Наведена програма демонструє різні методи класу LinkedList. Спочатку ми оголошуємо LinkedList типу String. Потім ми використовуємо різні версії методу add, такі як add, andFirst, addLast, addAll тощо, щоб заповнити LinkedList значеннями.
Тут ми можемо додати елемент безпосередньо в кінці списку або додати елемент у вказану позицію у списку.
Ми також використовуємо метод addFirst для додавання елемента на початку списку та addLast для додавання елемента в кінці списку. Потім ми виконуємо операції видалення в LinkedList, такі як remove, removeFirst, removeLast тощо.
Для методу remove ми можемо вказати елемент, який потрібно видалити, або вказати індекс або позицію в LinkedList, в якій елемент повинен бути видалений. Методи removeFirst та removeLast видаляють перший і останній елемент у списку відповідно.
Потім ми шукаємо в списку певний елемент, використовуючи метод contains. Далі ми використовуємо метод size () для отримання розміру або довжини LinkedList. Потім ми використовуємо методи get / set, щоб отримати значення за певним індексом у списку, а потім замінити значення у вказаній позиції у списку.
Нарешті, ми перетворюємо LinkedList в масив, використовуючи метод toArray.
Зворотний зв’язаний список у Java
Щоб змінити зв’язаний список на Java, ми використовуємо метод “descendingIterator ()”, який повертає зворотний ітератор для списку. Потім ми можемо використовувати цей ітератор для обходу елементів списку та відображення.
Наведена нижче програма перевертає пов'язаний список за допомогою методу descendingIterator ().
import java.util.*; public class Main{ public static void main(String args()){ //create a LinkedList object LinkedList l_list=new LinkedList(); l_list.add('Pune'); l_list.add('Mumbai'); l_list.add('Nagpur'); System.out.println('Linked List : ' + l_list); System.out.println('Linked List in reverse order:'); //use descendingIterator method to get a reverse iterator Iterator iter=l_list.descendingIterator(); //traverse the list using iterator and print the elements. while(iter.hasNext()) { System.out.print(iter.next() + ' '); } } }
Вихід:
Пов’язаний список: (Пуна, Мумбаї, Нагпур)
Пов’язаний список у зворотному порядку:
Нагпур Мумбаї Пуна

У наведеній вище програмі ми оголошуємо зв’язаний список, а потім друкуємо його. Потім ми отримуємо зворотний ітератор, а потім проходимо по списку, використовуючи його, і відображаємо кожен елемент. Вихідні дані відображають пов’язаний вміст списку, спочатку в порядку додавання елементів, а потім вихідний вміст відображає вміст у зворотному порядку.
Сортувати зв’язаний список на Java
Об'єкти класу LinkedList можна сортувати за допомогою методу Collections.sort (). Цей метод забезпечує дві версії з використанням компаратора або без нього. Коли метод Collections.sort () викликається без компаратора, колекція сортується у природному порядку.
Коли компаратор використовується з цим методом, ми можемо визначити власні критерії сортування, замінивши метод compareTo.
Наведена нижче програма Java сортує LinkedList за допомогою Collections.sort (). Тут ми сортуємо масиви за допомогою природного впорядкування, а також за допомогою компаратора.
import java.util.*; public class Main{ public static void main(String args()) { // create and initialize the LinkedList object LinkedList l_list = new LinkedList<>(); l_list.add('Jan'); l_list.add('Feb'); l_list.add('Mar'); l_list.add('Apr'); l_list.add('May'); l_list.add('Jun'); //print original unsorted linkedlist System.out.println('Original LinkedList (unsorted): ' + l_list); // sort LinkedList with Collecitons.sort() method in natural order Collections.sort(l_list); System.out.println('
LinkedList (sorted in natural order): ' + l_list); // sort LinkedList using Collection.sort() and Comparator in Java Collections.sort(l_list, new Comparator() { @Override public int compare(String s1, String s2) { return s1.length() - s2.length(); } } ); System.out.println('LinkedList (sorted using Comparator): ' + l_list); } }
Вихід:
Оригінальний LinkedList (несортований): (січень, лютий, березень, квітень, травень, червень)
LinkedList (відсортовано у природному порядку): (квітень, лютий, січень, червень, березень, травень)
LinkedList (відсортовано за допомогою компаратора): (квітень, лютий, січень, червень, березень, травень)

Видалити дублікати
Щоб видалити дублікати, вам потрібно пройти кожен вузол і порівняти його з наступним вузлом. Якщо обидва вузли однакові, тоді ми пропускаємо один вузол і переходимо до наступного.
Таким чином, після обходу кожного вузла та позбавлення від повторюваних вузлів, ми отримаємо результуючий список без жодних повторюваних елементів.
Нижче наведена програма Java для видалення дублікатів.
class LinkedList_Duplicate { //A class to represent node in linkedlist class Node{ int data; Node next; public Node(int data) { this.data = data; this.next = null; } } //Initially the head and tail of the linked list set to null public Node head = null; public Node tail = null; //add a new node to the linkedlist public void addNode(int data) { //Create new node Node newNode = new Node(data); //If list is empty set head and tail to new node if(head == null) { head = newNode; tail = newNode; } else { // add newNode after the tail tail.next = newNode; //newNode is now the tail or last element tail = newNode; } } //scans the linkedlist and removes duplicate nodes public void removeDuplicateNodes() { //Head is the current node Node current = head, index = null, temp = null; //head = null means list is empty if(head == null) { return; } //traverse through the list else { while(current != null){ //temp node points to previous node to index. temp = current; //Index will point to node next to current index = current.next; while(index != null) { //Check if current node's data is equal to index node's data if(current.data == index.data) { //since node is duplicate skip index and point to next node temp.next = index.next; } else { //Temp will point to previous node of index. temp = index; } index = index.next; } current = current.next; } } } //print the linked list public void print() { //Node current will point to head Node current = head; if(head == null) { System.out.println('List is empty'); return; } while(current != null) { //Print each node by incrementing pointer System.out.print(current.data + ' '); current = current.next; } System.out.println(); } }class Main{ public static void main(String() args) { LinkedList_Duplicate l_List = new LinkedList_Duplicate(); //Add data to the list l_List.addNode(1); l_List.addNode(1); l_List.addNode(2); l_List.addNode(3); l_List.addNode(5); l_List.addNode(2); l_List.addNode(1); l_List.addNode(1); //print the original list System.out.println('Original Linkedlist: '); l_List.print(); //Removes duplicate nodes l_List.removeDuplicateNodes(); //print the altered list without duplicates System.out.println('LinkedList after removing duplicates: '); l_List.print(); } }
Вихід:
Оригінальний список посилань:
1 1 2 3 5 2 1 1
LinkedList після видалення дублікатів:
1 2 3 5

У наведеній вище програмі у нас є зв’язаний клас списку, створений для видалення дублікатів. У нас також є клас для визначення кожного вузла. Іншими словами, вузли у списку є об'єктами цього вузла класу. У нас є спосіб додати вузол до пов’язаного списку.
Потім у методі removeDuplicate ми проходимо по кожному вузлу у зв’язаному списку, починаючи з головки, і порівнюємо кожен наступний вузол для дубліката. Якщо виявлено дублікат, ми пропускаємо цей вузол і переходимо до наступного вузла.
Таким чином, ist будується шляхом пропуску повторюваних вузлів, а змінений список друкується методом print ().
Круговий зв’язаний список на Java
Круговий зв’язаний список - це список, який має свій хвіст або останній вузол, підключений назад до головки або першого вузла.
На наведеній нижче схемі показано круговий зв’язаний список на Java.

Як показано на наведеній вище схемі, для адресної частини останнього вузла або хвоста зв'язаного списку не встановлено значення NULL. Натомість він вказує назад на перший вузол або головку списку, таким чином формуючи круговий зв’язаний список.
Наведена нижче програма реалізує круговий пов'язаний список, в якому ми маніпулюємо окремими вузлами пов'язаного списку.
class CircularLinkedList { //Node definition for circular linked list public class Node{ int data; Node next; public Node(int data) { this.data = data; } } //Initially head and tail pointers point to null public Node head = null; public Node tail = null; //add new node to the circular linked list public void add(int data){ //Create new node Node newNode = new Node(data); //check if list is empty if(head == null) { //head and tail point to same node if list is empty head = newNode; tail = newNode; newNode.next = head; } else { //tail points to new node if list is not empty tail.next = newNode; //New node becomes new tail. tail = newNode; //tail points back to head tail.next = head; } } //Display the nodes in circular linked list public void displayList() { Node current = head; if(head == null) { System.out.println('The List is empty'); } else { System.out.println('Circular linked list nodes: '); do{ //Print each node of the linked list System.out.print(current.data + ' '); current = current.next; }while(current != head); System.out.println(); } } } class Main{ public static void main(String() args) { //create a CircularLinkedList object CircularLinkedList c_list = new CircularLinkedList(); //Add data to the list c_list.add(10); c_list.add(20); c_list.add(30); c_list.add(40); //Display the nodes in circular linked list c_list.displayList(); } }
Вихід:
Вузли списку кругового зв'язку:
10 20 30 40

Java 8 LinkedList
Хоча в Java 8 більше немає особливостей, доданих спеціально до класу LinkedList, він все одно ввів потоки для маніпулювання даними.
У наведеній нижче програмі показано використання потоку Java 8 для відображення LinkedList.
import java.util.LinkedList; import java.util.List; public class Main { public static void main(String() args) { //create a LinkedList and initialize it to values List colorsList = new LinkedList<>(); colorsList.add('Red'); colorsList.add('Green'); colorsList.add('Blue'); colorsList.add('Cyan'); colorsList.add('Magenta'); //convert List to stream & print it System.out.println('The contents of LinkedList:'); colorsList.stream().forEach(System.out::println); } }
Вихід:
Зміст LinkedList:
Мережа
Зелений
Синій
Блакитний
Пурпуровий

Часті запитання
Q # 1) Коли в Java використовується зв’язаний список?
Відповідь: Оскільки це швидше, ніж колекції, такі як ArrayList, в операціях модифікації, його слід використовувати в додатках, які вимагають частих операцій додавання / видалення. Для програм, які мають переважно дані лише для читання, можна використовувати ArrayList або подібні колекції.
Q # 2) Що таке ListNode?
Відповідь: ListNode - це базовий клас, пов’язаний зі зв’язаним списком у Java, і представляє інформацію, пов’язану з одним елементом або вузлом. Кожен ListNode складається з даних та вказівника або посилання на наступний елемент.
Q # 3) Чи допускає зв’язаний список нульові значення?
Відповідь: Так, зв’язаний список дозволяє будь-яку кількість нульових значень.
Q # 4) Які переваги пов’язаного списку?
Відповідь: Деякі переваги:
- Операції маніпуляції, такі як додавання, видалення, в ній відбуваються швидше.
- Немає необхідності попередньо розподіляти пам'ять для пов'язаного списку, і, отже, це призводить до ефективного використання пам'яті.
- Він забезпечує швидший час доступу і без додаткових накладних витрат на пам'ять, і може бути розширений за постійний час.
- Це динамічна структура даних
- Зростає та скорочується під час виконання залежно від доданих чи видалених значень.
Q # 5) Яке застосування пов’язаного списку?
Відповідь: Використовується здебільшого в наступних програмах:
крапкові мережеві запитання та відповіді для досвідчених
- Впровадити функцію «скасувати» в програмному забезпеченні, як MS-Word, Photoshop тощо.
- Для реалізації таких структур даних, як стек і черга.
- Ми також можемо реалізувати графіки, використовуючи пов'язаний список.
- Для хешування сегмента кожен сегмент може бути реалізований як пов'язаний список.
Q # 6) Які обмеження пов’язаного списку?
Відповідь: Деякі обмеження:
- Завдяки додатковому покажчику для утримання посилання на наступний елемент у кожному вузлі, використана пам’ять набагато більше, ніж масиви.
- Це суворо послідовно доступна структура даних, отже, вузли зв’язаного списку завжди слід читати з самого початку.
- Її важко повернути назад, особливо поодинокі списки.
- Оскільки вузли зберігаються в несуміжних місцях, час, необхідний для доступу, може бути великим.
Висновок
У цьому посібнику ми вивчили основну структуру даних зв’язаного списку. Потім ми перейшли до класу java.util.LinkedList, наданого на Java. Ми детально обговорили цей клас, включаючи його конструктори, методи тощо.
Ми також обговорили деякі спеціальні операції, пов’язані зі зв’язаними списками, такі як сортування, реверсування списку, видалення дублікатів, круговий зв’язаний список тощо.
У нашому наступному уроці ми обговоримо конкретні особливості подвійно пов’язаного списку.
=> Ознайомтесь із Повним посібником з навчання Java тут.
Рекомендована література
- Подвійно пов’язаний список на Java - приклади реалізації та коду
- Список Java - Як створити, ініціалізувати та використовувати список у Java
- Методи списку Java - Список сортування, Містить, Список Додати, Список видалити
- Алгоритм двійкового пошуку в Java - Впровадження та приклади
- Сортування вставки в Java - Алгоритм сортування вставки та приклади
- Інтерфейс Java та підручник з абстрактних класів із прикладами
- Структура даних зв’язаного списку на C ++ з ілюстрацією
- Прихований список для масиву та інші колекції в Java