Python-data-structure-python-linked-lists
Python-リンクリスト
リンクリストは、リンクを介して互いに接続されたデータ要素のシーケンスです。 各データ要素には、別のデータ要素へのポインタ形式の接続が含まれています。 Pythonの標準ライブラリにはリンクリストがありません。 前の章で説明したノードの概念を使用して、リンクリストの概念を実装します。 ノードクラスを作成する方法と、ノードの要素をトラバースする方法については既に説明しました。 この章では、単一リンクリストと呼ばれるリンクリストの種類について学習します。 このタイプのデータ構造では、2つのデータ要素間に1つのリンクしかありません。 このようなリストを作成し、リストから要素を挿入、更新、削除する追加のメソッドを作成します。
リンクリストの作成
リンクリストは、前の章で学習したノードクラスを使用して作成されます。 Nodeオブジェクトを作成し、このodeオブジェクトを使用する別のクラスを作成します。 次のデータ要素を指すようにノードオブジェクトを介して適切な値を渡します。 以下のプログラムは、3つのデータ要素を含むリンクリストを作成します。 次のセクションでは、リンクリストを走査する方法を見ていきます。
リンクリストをたどる
単一リンクリストは、最初のデータ要素から始まる順方向でのみトラバースできます。 次のノードのポインターを現在のデータ要素に割り当てることにより、次のデータ要素の値を単に印刷します。
上記のコードが実行されると、次の結果が生成されます。
リンクリストへの挿入
リンクリストに要素を挿入するには、既存のノードから新しく挿入されたノードにポインターを再割り当てする必要があります。 新しいデータ要素がリンクリストの最初に挿入されるのか、中間に挿入されるのか、最後に挿入されるのかに応じて、以下のシナリオがあります。
リンクリストの先頭に挿入する
これには、新しいデータノードの次のポインターをリンクリストの現在のヘッドにポイントすることが含まれます。 したがって、リンクリストの現在のヘッドが2番目のデータ要素になり、新しいノードがリンクリストのヘッドになります。
上記のコードが実行されると、次の結果が生成されます。
リンクリストの最後に挿入する
これには、リンクリストの現在の最後のノードの次のポインターを新しいデータノードにポイントすることが含まれます。 したがって、リンクリストの現在の最後のノードは2番目の最後のデータノードになり、新しいノードはリンクリストの最後のノードになります。
上記のコードが実行されると、次の結果が生成されます。
2つのデータノード間に挿入する
これには、特定のノードのポインターを変更して、新しいノードを指すことが含まれます。 これは、新しいノードと既存のノードの両方を渡すことで可能になり、その後に新しいノードが挿入されます。 したがって、新しいノードの次のポインターを中間ノードの次のポインターに変更する追加のクラスを定義します。 次に、新しいノードを中間ノードの次のポインターに割り当てます。
上記のコードが実行されると、次の結果が生成されます。
いいねリストからアイテムを削除する
そのノードのキーを使用して、既存のノードを削除できます。 以下のプログラムで、削除するノードの前のノードを見つけます。 次に、このノードの次のポインターを、削除するノードの次のノードに向けます。
上記のコードが実行されると、次の結果が生成されます。