JavaScriptで単独リンクリスト
単独リンクリストを明確に理解するために、JavascriptでLinkedListクラスを実装します。
リンクリストの各ノードには2つの属性があります:value&next、リンクリストにはhead、tail、length属性があります。p>Push
新しいノードをリストの最後にプッシュするにはどうすればよいですか? プッシュ機能を作ってみましょう。 最初に、指定された値を使用して新しいノードを作成し、リストにヘッドがあるかどうかを確認する必要があります(空ですか?)そして、リストのサイズを増やすことを忘れないでください。
Pop
プッシュすると、ポップして最後の要素を削除することを考える必要があります。 ノードがない場合はundefinedを返し、そうでない場合は末尾に到達するまでリストをループし、最後の2番目のノードの次のプロパティをnullに設定し、最後の2番目を末尾にし、リストのサイズをデクリメントすることを忘れないでください。P>
シフト
最初の要素を削除するには、いつものようにシフトし、リストが空であるかどうかを確認します。 まず、現在の頭を変数に格納し、頭を現在の頭の次の頭に設定し、長さを減少させます。
Unshift
リストの先頭にノードを挿入するには、リストが空であるかどうかを確認します。、サイズをインクリメントします。
Get
リンクされたリストにインデックスがない場合でも、指定されたインデックスでノードを見つけることができます。 最初に、指定されたインデックスがゼロより大きく、リストの長さ以下であることを確認してください。 インデックスに到達するまでリストをループするよりも。リスト内のノードを変更したい場合はどうすればよいですか?
Get()でノードを見つけ、与えられたデータでノードを設定します。
挿入
リストに新しいノードを挿入する場合は、最初にインデックスが0より大きく、長さより インデックスが長さの場合はpush()を使用し、インデックスが0の場合はunshift()を使用します。 他のインデックスの場合、index-1のノードを取得し、そのノードの次のプロパティを新しいノードに設定し、新しいノードの次のプロパティを前の次のプロパテp>
remove
popやunshiftとは異なり、remove関数は指定されたインデックスによってノードを削除します。 通常のように、インデックスが有効かどうかを確認し、インデックスがlength-1または0に等しい場合はpopまたはshiftを使用します。 それ以外の場合は、index-1のノードを取得し、そのノードの次のプロパティを次のプロパティの次に設定し、サイズをデクリメントします。https://gist.github.com/GAierken/e888104f65a836925b11e102584edd76
リバース
究極の逆の質問! どのように我々はリストを逆にするのですか? まず、headとtailを交換し、nextとpreviousを宣言し、previousをnullに設定します。 私たちはリストをループします。p>