まず、リスト
1.リンクリストとは何ですか
- そして配列、また、線形リストテーブルであります
- メモリ構造からは、リンクリストメモリ構造は、連続したメモリ空間ではありませんデータがデータ構造体に格納されているように、直列に散在メモリブロックのセットです
- 各メモリブロックリストは、ノードノード、記憶データへのノードの追加、垂直鎖ノードアドレスを記録する必要があり、即ちポインタ次の後継者と呼ばれています
2.一般的なキャッシュポリシー
- FIFO戦略FIFO(先入れ先出し)
- 最低使用ポリシーのLFU(使用頻度の最も低いです)
- 最近最小使用ポリシーLRU(最低使用)
3. 3つの一般的なリスト構造
- 単一のリスト
- 各ノードは、ポインタ、すなわちポインタ後継を含ん
- 二つの特別な単一リンクリストのノード、すなわち、ヘッドノードとテール・ノードがあります。最初のノードのアドレスをリスト全体を表し、末尾ポインタアドレスヌルヌルを指す後続ノードポインタ
- 特徴:挿入とノードの削除の時間複雑度はO(1)時間の複雑さを見つけることではO(N)
- 二重リンクリスト
- データ記憶ノードに加えて、前の2つのノード・アドレスへのポインタポイントを(ポインタ前駆PREV)と次のノードアドレス(次ポインタ後継者)が存在します
- 前ポインタ前駆体および後継ポインタテイルノード点最初のノードに空アドレスであります
- 循環リスト
- ヘッドノードの次のノードのテールポインタアドレスに加えて、単一のリンク・リストと一致しています
- 以下のようなデータ循環機能、保存しようとするジョセフの問題を。
4.鎖配列との間の差と
- 最も直感的な差分データでも使用可能な合計メモリ空間の過剰ならば、我々は、配列の100MBのサイズを適用した場合、メモリが連続し、十分な大きさの収納スペースでない場合、メモリ要件は、比較的高く、一つの連続したメモリ空間にする必要があります100メガバイトより大きく、アプリケーションは失敗します。逆に、リストには、それが使用するために直列に接続された断片化されたメモリブロックのグループによってポインタ、連続したメモリ空間を必要としないので、私たちは、リストの100MBのサイズを適用する場合は、問題ありません。
複雑性の比較:
時間複雑 配列 リスト 加除 O(n) O(1) ランダムアクセス O(1) O(n) バックJavaでメモリの断片化を引き起こす可能性があるため、余分なスペースの配列、より多くのメモリ空間の消費量、頻繁にメモリ割り当てが発生し、解放するために戻って、頻繁に挿入および欠失のリストをポインタ情報を格納するために、リストの相対的な、 GCの頻繁な操作で得られました