linked list java linked list implementation java examples
このチュートリアルでは、Javaのリンクリストデータ構造とは何か、およびJavaリンクリストを作成、初期化、実装、トラバース、リバース、およびソートする方法について説明します。
Javaでは、LinkedListは、要素を非連続の場所に格納するデータ構造です。これは線形データ構造です。
各データ項目は「ノード」と呼ばれ、各ノードにはデータ部分とアドレス部分があります。アドレス部分は、LinkedList内の次のノードへのリンクを格納します。
=> すべてのJavaトレーニングシリーズを見るには、ここにアクセスしてください。
学習内容:
JavaのLinkedList
LinkedListの一般的なレイアウトを以下に示します。
上記のLinkedListの表現に示されているように、LinkedListの各項目は「ノード」です。各ノードには2つの部分があり、最初の部分にはデータが格納され、2番目の部分にはLinkedList内の次のノードの参照またはポインターまたはアドレスがあります。
最高の無料のウイルス除去は何ですか
LinkedListのデータは、配列とは異なり、連続していない場所に格納されるため、この配置が必要です。
LinkedListの「Head」は、LinkedListの最初の要素のアドレスを含むポインターです。 LinkedListの最後のノードはテールです。上の図に示すように、LinkedListの最後のノードのアドレス部分は、LinkedListの終わりを示す「Null」に設定されています。
上の図は「 単一リンクリスト 」は、LinkedList内の次のノードのみのアドレスを格納します。
「」として知られている別のバージョンがあります 二重リンクリスト 」の各ノードには3つの部分があります。
- LinkedListの前の要素へのアドレスまたは参照またはポインター。
- データ部分
- LinkedListの次の要素へのアドレスまたは参照またはポインター。
LinkedListの最初の要素の前のアドレスはNullに設定され、LinkedListの最後の要素の次のポインターはNullに設定されます。
二重リンクリストの表現:
上記の表現に示されているように、二重リンクリストの各ノードには、前のノードと次のノードへのポインターがあります(したがって、矢印なしで表されます)。最初のノードの前のポインターはnullを指し、最後のノードの次のポインターはnullを指します。
このLinkedListチュートリアルでは、主に単一リンクリストを扱います。次のチュートリアルでは、二重リンクリストについて説明します。
JavaLinkedListクラス
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をクラスとして表し、そのノードを別のクラスとして表すことができます。したがって、このクラスにはノードタイプへの参照があります。
これを以下に示します。
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型のオブジェクトを作成するには、次の2つの主要なコンストラクターがあります。
#1)LinkedList()
このコンストラクターの一般的な構文は次のとおりです。
LinkedList linkedList = new LinkedList();
上記のステートメントは、空のLinkedListを作成します。
例えば、
LinkedList l_list = new LinkedList();
これにより、l_listという名前の空のリンクリストが作成されます。
#2)LinkedList(コレクションc)
一般的な構文は次のとおりです。
LinkedList linkedList = new LinkedList (Collection c);
上記のステートメントは、コレクションcの要素を初期要素として持つLinkedListを作成します。
すでに見てきた他のリストデータ構造と同様に、リンクリストは、addメソッド、Arrays.asList()メソッドを使用するか、コレクションを引数としてコンストラクターを使用して初期化することもできます。
Javaでのリンクリストの実装
以下に示すのは、JavaのLinkedListデータ構造の簡単な例です。この実装例では、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)
2番目のLinkedListの内容:(赤、緑、青、シアン、マゼンタ)
上記のプログラムは、LinkedListの作成と初期化を示しています。まず、整数型のLinkedListを作成し、LinkedListの初期値としてasListメソッドを使用してリストに変換された整数の配列を提供します。
次に、String型の空のLinkedListを作成し、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 出力:
forループを使用するLinkedList要素:
赤緑青

forEachループの使用
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 + ' '); } } }
出力:
forEachループを使用するLinkedList要素:
赤緑青

イテレータの使用
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() + ' '); } } }
出力:
リンクリストの内容:
赤緑青黄色
アジャイルテストとウォーターフォールテストの違い

LinkedListメソッド
LinkedListクラスは、リンクリストを操作するためのさまざまなメソッドをサポートするAPIを提供します。以下のLinkedListAPIのメソッドを表にまとめました。
次のセクションでは、主な操作/方法について説明します。
方法 プロトタイプ 説明 晴れ ボイドクリア() リストからすべての要素を削除します。 追加 ブール加算(E e) 指定された要素をLinkedListに追加します void add(int index、E element) LinkedListの指定されたインデックスに要素を追加します 全て追加する boolean addAll(コレクションc) LinkedListの最後に指定されたコレクションcの要素を追加します。 boolean addAll(int index、Collection c) LinkedListの指定されたインデックスに指定されたコレクションcの要素を追加します addFirst void addFirst(E e) 指定された要素を最初の要素としてLinkedListに追加します。 addLast void addLast(E e) 指定された要素をリストの最後に追加します。 クローン オブジェクトクローン() LinkedListの浅いコピーを作成します 含まれています ブール値には(オブジェクトo)が含まれます リストに指定された要素が含まれているかどうかを確認します。 yesの場合はtrueを返します。 降順Iterator イテレータdescendingIterator() LinkedListの逆順のイテレータを返します。 素子 E要素() リストの先頭にある要素を返します。 取得する E get(int index) 指定されたインデックスの要素を取得します。 getFirst E getFirst() LinkedListの最初の要素を取得します。 getLast E getLast() LinkedListの最後の要素を取得します。 の指標 Int indexOf(オブジェクトo) リスト内の指定された要素の最初の出現のインデックスを見つけて、インデックスを返します。 -要素が見つからない場合は-1。 lastIndexOf Int lastIndexOf(Object o) LinkedList内の指定された要素の最後の出現位置を返します。指定された要素が存在しない場合は-1 listIterator ListIterator listIterator(int index) リンクリスト内の指定されたインデックスからlistIteratorを返します。 提供 ブールオファー(E e) LinkedListの最後の要素(テール)として指定された要素を追加します。 オファーファースト ブール値offerFirst(E e) 指定された要素をLinkedListの最初の要素として追加します。 オファーラスト ブール値offerLast(E e) LinkedListの最後に指定された要素eを追加します。 ピーク Eピーク() リストの先頭を削除せずに返します。 peekFirst E peekFirst() リストの最初の要素を返します。リストが空の場合はnullを返します。 peekLast E peekLast() 最後の要素を返します。リストが空の場合はnullを返します。要素は削除されません。 投票 E投票() LinkedListの先頭を返し、それも削除します。 pollFirst E pollFirst() リストの最初の要素を返し、削除します。リストが空の場合はnullを返します。 pollLast E pollLast() リストの最後の要素を返し、削除します。リストが空の場合はnullを返します。 ポップ Eポップ() LinkedListのスタック表現から要素をポップします。 押す ボイドプッシュ(E e) LinkedListのスタック表現に要素をプッシュまたは挿入します。 削除する E削除() LinkedListの先頭を削除して返します。 E削除(intインデックス) LinkedListから指定されたインデックスの要素を削除します。 ブール値の削除(オブジェクトo) 指定された要素の最初の出現をLinkedListから削除します。 removeFirst E removeFirst() リストの最初の要素を返し、削除します。 removeFirstOccurence ブールremoveFirstOccurrence(オブジェクトo) リストが先頭から末尾にトラバースされているときに、指定された要素の最初の出現をリストから削除します。 removeLast E removeLast() LinkedListの最後の要素を返し、それも削除します。 removeLastOccurence ブールremoveLastOccurrence(オブジェクトo) 頭から尾までトラバースしたときに、指定された要素の最後の出現をLinkedListから削除します セットする Eセット(intインデックス、E要素) 指定された要素を指定されたインデックスに設定します。現在の要素を新しいものに置き換えます。 サイズ 整数サイズ() LinkedListの要素のサイズまたは数を返します toArray Object () toArray() LinkedListを、すべてのリスト要素を適切な順序で含む配列に変換します T () toArray(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クラスのさまざまなメソッドを示しています。まず、String型のLinkedListを宣言します。次に、add、First、addLast、addAllなどのさまざまなバージョンのaddメソッドを使用して、LinkedListに値を入力します。
ここでは、リストの最後に要素を直接追加することも、リストの指定された位置に要素を追加することもできます。
また、addFirstメソッドを使用してリストの最初に要素を追加し、addLastを使用してリストの最後に要素を追加します。次に、remove、removeFirst、removeLastなどのLinkedListに対する削除操作を実行します。
removeメソッドの場合、削除する要素を指定するか、要素を削除するLinkedList内のインデックスまたは位置を指定できます。メソッドremoveFirstとremoveLastは、それぞれリストの最初と最後の要素を削除します。
次に、containsメソッドを使用して特定の要素のリストを検索します。次に、size()メソッドを使用して、LinkedListのサイズまたは長さを取得します。次に、get / setメソッドを使用して、リスト内の特定のインデックスの値を取得し、リスト内の指定された位置の値を置き換えます。
最後に、toArrayメソッドを使用してLinkedListを配列に変換します。
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()メソッドを使用して並べ替えることができます。この方法では、コンパレータを使用する場合と使用しない場合の2つのバージョンが提供されます。 Collections.sort()メソッドがコンパレータなしで呼び出されると、コレクションは自然な順序で並べ替えられます。
いつ コンパレータ このメソッドで使用される場合、compareToメソッドをオーバーライドすることにより、独自のソート基準を定義できます。
以下のJavaプログラムは、Collections.sort()を使用してLinkedListをソートします。ここでは、コンパレータを使用するだけでなく、自然な順序を使用して配列を並べ替えます。
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(未分類):(1月、2月、3月、4月、5月、6月)
LinkedList(自然な順序でソート):(4月、2月、1月、6月、3月、5月)
LinkedList(コンパレータを使用してソート):(4月、2月、1月、6月、3月、5月)

重複を削除する
重複を削除するには、各ノードをトラバースして、次のノードと比較する必要があります。両方のノードが同じである場合、1つのノードをスキップして、次のノードに移動します。
このようにして、すべてのノードをトラバースし、重複ノードを削除した後、重複要素のない結果のリストを取得します。
以下に、重複を削除する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の循環リンクリストを示しています。

diffコマンドを使用して2つのファイルを比較する方法
上図に示すように、リンクリストの最後のノードまたはテールのアドレス部分は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クラスに特別に追加された機能はこれ以上ありませんが、データを操作するためのストリームが導入されています。
以下のプログラムは、Java8ストリームを使用して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) リンクリストはnull値を許可しますか?
回答: はい、リンクされたリストは任意の数のnull値を許可します。
Q#4) リンクリストの利点は何ですか?
回答:いくつかの利点は次のとおりです。
- 追加、削除などの操作操作が高速になります。
- リンクリストにメモリを事前に割り当てる必要がないため、メモリを効率的に使用できます。
- アクセス時間を短縮し、メモリのオーバーヘッドを追加することなく、一定時間で拡張できます。
- 動的なデータ構造です
- 追加または削除された値に応じて、実行時に拡大および縮小します。
Q#5) リンクリストの用途は何ですか?
回答:主に次のアプリケーションで使用されます。
- MS-Word、Photoshopなどのソフトウェアに「元に戻す」機能を実装するため。
- スタックやキューなどのデータ構造を実装するため。
- リンクリストを使用してグラフを実装することもできます。
- バケットハッシュの場合、各バケットはリンクリストとして実装できます。
Q#6) リンクリストの制限は何ですか?
回答:いくつかの制限は次のとおりです。
- 各ノードの次の要素の参照を保持するための追加のポインターを使用すると、使用されるメモリは配列よりもはるかに多くなります。
- これは厳密に順次アクセスされるデータ構造であるため、リンクリストのノードは常に最初から読み取る必要があります。
- 特に単一リンクリストを逆方向にトラバースすることは困難です。
- ノードは連続していない場所に格納されているため、アクセスに必要な時間が長くなる可能性があります。
結論
このチュートリアルでは、基本的なリンクリストのデータ構造を学習しました。次に、Javaで提供されるjava.util.LinkedListクラスに移動しました。このクラスについては、コンストラクター、メソッドなどを含めて詳細に説明しました。
また、並べ替え、リストの反転、重複の削除、循環リンクリストなど、リンクリストに関連するいくつかの特別な操作についても説明しました。
次のチュートリアルでは、二重にリンクされたリストの特定の機能について説明します。
=> ここで完全なJavaトレーニングガイドを確認してください。
推奨読書