Data-structures-algorithms-linked-list-algorithms

提供:Dev Guides
移動先:案内検索

データ構造とアルゴリズム-リンクリスト

リンクリストは、データ構造のシーケンスであり、リンクを介して互いに接続されています。

リンクリストは、アイテムを含む一連のリンクです。 各リンクには、別のリンクへの接続が含まれています。 リンクリストは、配列の次によく使用されるデータ構造です。 以下は、リンクリストの概念を理解するための重要な用語です。

  • リンク-リンクリストの各リンクは、要素と呼ばれるデータを保存できます。
  • 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 [ここをクリック]をクリックしてください。