Data-structures-algorithms-linked-list-algorithms
データ構造とアルゴリズム-リンクリスト
リンクリストは、データ構造のシーケンスであり、リンクを介して互いに接続されています。
リンクリストは、アイテムを含む一連のリンクです。 各リンクには、別のリンクへの接続が含まれています。 リンクリストは、配列の次によく使用されるデータ構造です。 以下は、リンクリストの概念を理解するための重要な用語です。
- リンク-リンクリストの各リンクは、要素と呼ばれるデータを保存できます。
- Next -リンクリストの各リンクには、Nextという次のリンクへのリンクが含まれています。
- LinkedList -リンクリストには、Firstという最初のリンクへの接続リンクが含まれています。
リンクリストの表現
リンクリストは、すべてのノードが次のノードを指すノードのチェーンとして視覚化できます。
上記の図に従って、考慮すべき重要な点を次に示します。
- リンクリストには、最初に呼び出されるリンク要素が含まれています。
- 各リンクには、データフィールドとnextというリンクフィールドがあります。
- 各リンクは、次のリンクを使用して次のリンクにリンクされます。
- 最後のリンクは、リストの終わりを示すためにリンクをヌルとして運びます。
リンクリストの種類
以下は、さまざまなタイプのリンクリストです。
- シンプルリンクリスト-アイテムのナビゲーションは前方のみです。
- 二重リンクリスト-アイテムは前後にナビゲートできます。
- 循環リンクリスト-最後のアイテムには、次のように最初の要素のリンクが含まれ、最初の要素には前の最後の要素へのリンクがあります。
基本操作
リストでサポートされる基本的な操作は次のとおりです。
- 挿入-リストの先頭に要素を追加します。
- 削除-リストの先頭にある要素を削除します。
- 表示-完全なリストを表示します。
- 検索-指定されたキーを使用して要素を検索します。
- 削除-指定されたキーを使用して要素を削除します。
挿入操作
リンクリストに新しいノードを追加することは、複数のステップアクティビティです。 ここで図でこれを学習します。 最初に、同じ構造を使用してノードを作成し、ノードを挿入する場所を見つけます。
*A* (LeftNode)と *C* (RightNode)の間にノード *B* (NewNode)を挿入するとします。 次に、Cの横にあるB.
NewNode.next −> RightNode;
それはこのように見えるはずです-
これで、左側の次のノードが新しいノードを指すようになります。
LeftNode.next −> NewNode;
これにより、2つの中央に新しいノードが配置されます。 新しいリストは次のようになります-
リストの先頭にノードを挿入する場合、同様の手順を実行する必要があります。 最後に挿入する間、リストの最後から2番目のノードは新しいノードを指し、新しいノードはNULLを指します。
削除操作
削除も複数のステップのプロセスです。 絵入りで学習します。 最初に、検索アルゴリズムを使用して、削除するターゲットノードを見つけます。
ターゲットノードの左(前)ノードは、ターゲットノードの次のノードを指すようになります-
LeftNode.next −> TargetNode.next;
これにより、ターゲットノードを指していたリンクが削除されます。 ここで、次のコードを使用して、ターゲットノードが指しているものを削除します。
TargetNode.next −> NULL;
削除されたノードを使用する必要があります。 それをメモリに保持できます。そうしないと、メモリの割り当てを解除して、ターゲットノードを完全に消去できます。
逆運転
この操作は徹底的なものです。 最後のノードをヘッドノードが指すようにし、リンクリスト全体を逆にする必要があります。
まず、リストの最後まで移動します。 NULLを指している必要があります。 今、私たちはそれが前のノードを指すようにします-
最後のノードが最後のノードではないことを確認する必要があります。 そのため、ヘッドノードが最後のノードを指しているように見える一時ノードがあります。 ここで、すべての左側のノードが以前のノードを1つずつ指すようにします。
ヘッドノードが指すノード(最初のノード)を除いて、すべてのノードは前のノードを指し、それらを新しい後継ノードにする必要があります。 最初のノードはNULLを指します。
一時ノードを使用して、ヘッドノードが新しい最初のノードを指すようにします。
リンクされたリストが逆になりました。 Cプログラミング言語でのリンクリストの実装を確認するには、link:/data_structures_algorithms/linked_list_program_in_c [ここをクリック]をクリックしてください。