リンクリストのチュートリアル:–動的データストレージの概要

開示: あなたのサポートはサイトの運営を維持するのに役立ちます!このページで推奨する一部のサービスについては、紹介料を稼ぎます.


リンクされたリストは、さまざまなデータセットを構造化し、プログラムの線形情報を整理する必要がある場合に役立つツールです。それらは、それらを使用することに特定の利点があるため、一般的にアレイの代わりとして使用されます。.

基本的に、リンクリストは一連のノードを保持する単純なデータ構造です。各ノードには独自のデータと、別のノードへのポインターがあります。実際、生徒がポインタを快適に利用できるようにするために、彼らはしばしば教えられます.

以下では、リンクリストとは何か、それらが重要である理由、およびそれらを作成する方法について説明します。また、教育を促進するためにいくつかの追加リソースを提供します.

リンクリストとは?

簡単に言えば、リンクされたリストは、順序付けられたデータのコレクションです。これは線形データ構造用であり、実装が最も簡単な動的データ構造の1つです。各データ要素はノードと呼ばれ、単一の値とリスト内の次のノードへのポインターを含みます。ポインタの値がNULLの場合、そのノードはリストの最後です。.

ここでの概念を理解しやすくするために、コンピュータテクノロジー以外の例を示します。

タイピング速度に基づいてオフィスのすべての人を評価しているとしましょう。誰もが彼女が最速であることを誰もが知っているので、あなたのリストはアンから始まります—あなたは彼女のキュービクルから来る音を聞くことができます。彼女は次に速い人物はスティーブであると言われています。スティーブは、タイピングの速度がアンの速度に近いことを知っていますが、それほど速くはありません。彼はまた、カレンが彼と同じくらい速いが、かなりではないことを知っています。リストはこの方法で続行できます。各メンバーは固有の情報と、次に速いタイピストが誰であるかを示すインジケーターを所有しています.

ノードは、ポインターの関係を除いて、互いに独立して存在するため、ノードの追加、削除、移動は非常に簡単です.

リンクリストの種類

リンクリストにはいくつかの種類があります。単一のリンクリスト、二重リンクリスト、マルチリンクリスト、循環リンクリスト。それぞれについて、以下で詳しく説明します。リンクされたリストを使用すると、挿入、削除、およびトラバーサル操作を実行できます.

1.単一のリンクリスト

単一のリンクリストは、あるオブジェクトから次のオブジェクトへの特定の参照によってリンクされているデータオブジェクトのコレクションです。これらのオブジェクトは、ノードと呼ばれることがよくあります。各ノードには、少なくとも1つのデータフィールドと次のノードへの参照が含まれます。単一のリンクリストは最初のノードを介してアクセスされ、リストの最後までたどることができます.

2.二重リンクリスト

二重リンクリストには、ノードごとに2つの参照があります。参照は、次のノードと前のノードを指しています。この構造により、データセットへの双方向アクセスが可能になり、リストを双方向にナビゲートできるため、柔軟性と速度が向上します.

3.マルチリンクリスト

マルチリンクリストは、特定のノードからの複数の追加リストを持つ一般的なリンクリストです。新しいリストは、ここで言及されているどのスタイルでもかまいません。このスタイルのリストは、ユーザーの名前と年齢で分類されたリストをソートするのに役立ちます。または、各データポイントがさらに分類されている他のスタイルのデータセット.

4.循環リンクリスト

リンクリストの最後のタイプは、循環リンクリストと呼ばれます。 NULLコマンドを持つ最後のノードの代わりに、リストの先頭を参照します。リストの構造は上記のオプションに似ています.

リンクリストが重要な理由

リンクされたリストは、その動的な性質のために便利です。コンピューティングの意味では、必要なときにのみメモリを割り当てます。したがって、頻繁にサイズ変更、削除、挿入、およびデータの更新を必要とするアプリケーションがある場合、リンクされたリストは完璧です.

リンクリストは、グラフ、スタック、キュー、およびその他の同様のプログラムを実装するために一般的に使用されます。リンクされたリストを使用すると、リストの任意の場所にアイテムを挿入できます。さらに、最終的なリストのサイズを事前に知っておく必要はありません。フィット感に応じてサイズを増減できます.

簡単に挿入および削除できることは、リンクリストの主な利点です。たとえば、配列を使用できますが、配列では、一連のデータを移動して空きスロットを作成せずに、シーケンスの最後のオブジェクトを追加および削除することしかできません。リンクリストにより、メモリリソースに大きな負担をかけることなく、簡単なシーケンシャルデータセット操作が可能になります。.

ほとんどのコンピュータサイエンスプログラムでは、実際のプログラムで使用する可能性のある動的データ構造の確かな紹介として、リンクリストの実装方法を学生に教え続けています。さらに、リンクされたリストを使用しない場合でも、ポインタを使用するための十分な理解が得られます。あなたはきっとあなたの実際のプログラムの多くでポインタを使うでしょう。.

リンクリストの欠点

リンクリストは、変更が簡単なリストを作成するのに最適です。ただし、以下に示すように、これらはすべてのプログラムに最適なソリューションではありません。

  1. リンクリストはランダムアクセスポイントを提供しません。リスト内の特定のアイテムに到達するには、その時点までリスト内のすべてのアイテムを反復する必要があります.
  2. コードが機能するには動的メモリ割り当てとポインタの両方が必要なため、コードは少し複雑になる可能性があります.
  3. リストは動的に割り当てられるため、リンクリストの合計オーバーヘッドは配列よりも高くなる可能性があります.

つまり、リンクリストの使用方法を知っていると、ポインタの使用法を習得し、動的データセット全体をより深く理解できるようになります。.

リンクリストのチュートリアル

以下では、基本的なリンクリストを作成して実装する方法について説明します。まず、単一のリンクリストとそのノードを作成し、新しいノードを削除および挿入する方法を示します.

ノード構造の作成

リンクリストは複数のノードで構成されているため、ノードを定義する構造を作成する必要があります。これには、データ用の少なくとも1つの変数と、次のノードを参照するための1つのポインターを含める必要があります。ここでは、入力速度の例に固執し、人物の名前と速度、およびデータを使用します。 Cでは、データは次のように構造体で定義されます。

構造ノード{
文字列名[32];
int speed;
構造ノード*次;
}

ここで重要なのは次のポインタです。これにより、リスト全体を操作できます。.

リンクリストの作成

次に、リストを作成する必要があります。これは、実際には最初のノードを作成するだけです。それを定義し、単一のノードに十分なメモリを割り当て、次のポインタをNULLに設定して、これがリストの終わりであることを確認します。また、リンクされたリストが開始する場所であるため、ヘッドポインターをそれに設定します.

次に、このノードの情報を入力できます。従業員の名前と入力速度.

ノードの挿入

基本的なリストを作成したら、リストに要素を追加し始めることができます。では、毎分58語のタイピング速度を持つカレンから始めたとします。次に、速度63でスティーブを入力します。彼のためにノードを作成し、データを入力します。次に、リンクされたリストを検索しますが、この場合、要素は1つしかありません。スティーブの方がタイピング速度が速いので、次のポインターをカレンのポインターに設定するとします。カレンのポインターはヘッドポインターでもあるので、ヘッドをスティーブのノードに向けます.

これで、スティーブのノードから始まるリンクリストができました。次はカレンのノードを指します。そして、カレンのノードはNULLをポイントし、彼女のノードがリストの最後であることを示します.

従業員がKarenとSteveの間でタイピング速度で雇われた場合、ノードが作成されます。しかし、スティーブの次は新入社員を指し、新入社員の次はカレンの次を指します.

一方、従業員がカレンよりも少ない入力速度で雇用された場合、ノードが再び作成されます。しかし、カレンの次は新入社員を指し、新入社員の次はNULLを指します.

ノードの削除

リンクされたリストからノードを削除することは、実際には非常に簡単なプロセスです。削除したい従業員の前の次のポインターを、削除したい従業員の後の従業員を指すようにします。次に、削除されたノードのメモリを解放するか、メモリリークが発生します。.

もちろん、リンクされたリストでできることは他にもたくさんあります。リンクされたリストをさらに探索することに興味がある場合は、以下にハイライトされているリソースをチェックしてください.

リンクリストのリソース

リンクリストの基本的な概念を理解したら、次は知識を深めてください。以下では、リンクリストを完全にマスターし、データ構造をより深く理解するのに役立ついくつかの追加リソースを提供します。

  • Narasimha Karumanchiによるデータ構造とアルゴリズムの作成(2016):リンクされたリストをはるかに超えるデータ構造に関するすばらしい本.
  • Linked Lists Basics(PDF):この26ページのPDFは、疑似コードとC言語の例で知りたいと思うすべてのものを提供します。.
  • データ構造の穏やかな紹介:この簡単な紹介で、最初のリンクリストプログラムを作成することができます。.
  • リンクリストチュートリアル:これは、Cでリンクリストを作成するための7つの短いビデオのコレクションです。++.
  • Learn-C.orgのリンクリストページ:このページでは、簡単なC言語のリンクリストの作成について説明します。.
  • JavaScriptを使用したデータ構造:このJavaScriptチュートリアルを使用して、ブラウザー内でリンクリストを学ぶ.

概要

リンクリストは、動的データセットを管理および作成するための優れた概念と実用的な方法を提供します。うまくいけば、上記の情報が基本的なリンクリストを把握して実装するのに役立ちました。.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map