TIL#119:「データ構造」接続リストリンクリスト
Linked list
リンクリストとは?
ArrayListとは異なり、EllistとEllistの間の接続を利用してリストを実現することを意味する.接続リストでは、セグメントをノードまたは頂点と呼びます.
接続リストは、データと次のノードアドレスを含むノードを1行に接続するリニアデータ方式のデータ構造である.Linked listの最大折りたたみは、データの挿入と削除が容易であることです.逆に、チェーンテーブルで特定の位置のデータを検索するには、最初のノードからナビゲートする必要があります.その時間長はO(n)であるため,配列やツリー構造よりもナビゲーションが遅い.
ノードは少なくとも2つの情報を知らなければならない。
ノードの基本構造:
データフィールドにはvalueという変数が使用され、リンクフィールドにはnext変数が使用されます.valueはノード値を格納し、nextは次のノードのポインタまたは参照値を格納してノードをノードに関連付けます.
データの追加
先頭に追加
headの値を変更して、新しく作成したノードを最初のノード
中間に追加
これはarrayリストと最も異なる部分です.配列の中間に追加すると、削除時にそのセグメントの後ろのすべてのセグメントの位置を移動する必要がありますが、linklistでは、追加/削除するセグメントの今回、以降のノードの参照値(next)を変更するだけなので、速度が速いです.
2番目の場所に追加するとします.
1.headを参照して最初のノードを検索する必要があります
2.最初のノードの次のノード(2番目)を変数に保存
3.2番目のノードの次の参照値も変数に格納
4.新規ノードの作成
5.最初のノードの次の参照値に新しいノードを割り当てる
6.新しいノードに次の参照値として2番目のノードを割り当てる
自然に:
첫번째 노드 -> 새로운 노드 -> 두번째 노드
データの削除
データを追加する方法と似ています.
3番目の場所を削除するとします.
1.headを参照して最初のノードを検索
2.2番目のノードに移動
3.3番目のノードを見つける
4.2番目のノードの次の参照値(next)を4番目のノード(.next.next)に変更
5.3番目のノードを削除する(delete)
索引によるデータの問合せ
linked listの場合、headが示すノードから順にノードを検索する必要があります.ただしarrayリストは、対応する別名に直接アクセスできます.
リンクリストのタイプ
リンクリストの章と欠点
長所
短所
Reference:
https://opentutorials.org/module/1335/8821
https://underflow101.tistory.com/3
https://daimhada.tistory.com/72
Reference
この問題について(TIL#119:「データ構造」接続リストリンクリスト), 我々は、より多くの情報をここで見つけました https://velog.io/@mjhuh263/TIL-Data-Structure-연결-리스트-Linked-Listテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol