資料構造復習、Linked List 全攻略!
2022, Jun 28
Linked list の特性
Linked List は不連続のメモリアドレスで構成され、ポインタ(pointer)を通じて要素(elements)を相互にリンクするデータ構造です。
Linked list の利点
Array と比較して、Linked List には以下の利点があります:
1.Linked List はサイズが柔軟で、事前にサイズを指定する必要がありません。
2.要素の挿入や削除のコストが低く、ポインタの指向を変更するだけで済み、全体を移動する必要がありません。
3.連続したメモリ空間を必要としないため、より柔軟です。
Linked list の欠点
Array と比較して、Linked List には以下の欠点があります:
1.ランダムアクセスの効率が悪く、最初のノードから順に走査する必要があります。
2.各ノードのポインタに追加のメモリ空間が必要です。
3.相対アドレスを直接使用できません。Array は連続アドレスのため相対アドレスが使用できますが、Linked List では使用できません。
Linked list の構成
Linked List の各ノードは以下の2つの要素を含みます:
1.データ(Data)
2.ポインタ(Pointer)
以下は Kotlin で Linked List を実装するコードです
以下は Linked List を走査するコードです
上記のコードに加えて、Kotlin の Data Class を使用して Linked List を実装することもできます:
Linked List の複雑度
時間計算量 | 最悪の場合 | 平均の場合 |
---|---|---|
Search | O(n) | O(n) |
Insert | O(1) | O(1) |
Deletion | O(1) | O(1) |