Articles

JavaScriptで単独リンクリスト

単独リンクリストを明確に理解するために、JavascriptでLinkedListクラスを実装します。

リンクリストの各ノードには2つの属性があります:value&next、リンクリストにはhead、tail、length属性があります。p>Push

新しいノードをリストの最後にプッシュするにはどうすればよいですか? プッシュ機能を作ってみましょう。 最初に、指定された値を使用して新しいノードを作成し、リストにヘッドがあるかどうかを確認する必要があります(空ですか?)そして、リストのサイズを増やすことを忘れないでください。

Pop

プッシュすると、ポップして最後の要素を削除することを考える必要があります。 ノードがない場合はundefinedを返し、そうでない場合は末尾に到達するまでリストをループし、最後の2番目のノードの次のプロパティをnullに設定し、最後の2番目を末尾にし、リストのサイズをデクリメントすることを忘れないでください。P>

シフト

最初の要素を削除するには、いつものようにシフトし、リストが空であるかどうかを確認します。 まず、現在の頭を変数に格納し、頭を現在の頭の次の頭に設定し、長さを減少させます。

https://gist.github.com/GAierken/e6a11cdaf63d9620db33cef58d0a9507

Unshift

リストの先頭にノードを挿入するには、リストが空であるかどうかを確認します。、サイズをインクリメントします。

Get

リンクされたリストにインデックスがない場合でも、指定されたインデックスでノードを見つけることができます。 最初に、指定されたインデックスがゼロより大きく、リストの長さ以下であることを確認してください。 インデックスに到達するまでリストをループするよりも。リスト内のノードを変更したい場合はどうすればよいですか?

Get()でノードを見つけ、与えられたデータでノードを設定します。

https://gist.github.com/GAierken/e9b0bb11849219914e2b3ee7b215d5d2

挿入

リストに新しいノードを挿入する場合は、最初にインデックスが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>

https://gist.github.com/GAierken/556c13f4ccbc5bcd49584bd662b553de