リスト (コンピューティング)について詳しく解説

導入

この記事は、コンピューティングにおける単語リストの使用に関するものです。単語リストのより一般的な定義については、ウィクショナリーを参照してください。

コンピューティングにおいて、リストは、自由にアクセスできるようにデータをグループ化するためのデータ構造です (それぞれ FIFO モードと LIFO モードでアクセスされるキューやスタックとは異なります)。

リストは、スタック、キュー、ツリーなどのより複雑なデータ構造の基礎となります。データ構造としてのリストの重要性は、 LISP (List Processing) プログラミング言語の基礎となっているほどです。

リスト (コンピューティング)について詳しく解説

プリミティブ

リストを操作するために一般的に使用されるプリミティブを次に示します。リスト操作プリミティブには標準化がありません。したがって、彼らの名前は非公式に示されています。

基本的なプリミティブ:

  • 「挿入」: リストに項目を追加します。対応する英語用語:「Add」。
  • 「削除」: リストから項目を削除します。対応する英語用語:「Remove」。
  • 「リストは空ですか?」 »: リストが空の場合は「true」を返し、それ以外の場合は「false」を返します。対応する英語用語:「Isnil」。
  • 「リストの要素数」: リストの要素を返します。対応する英語用語:「Length」。

よく見かける補助プリミティブ:

  • 「First」: リスト内の最初の要素を返します。対応する英語用語:「First」。
  • 「Last」: リスト内の最後の要素を返します。対応する英語用語:「Last」。
  • 「次へ」: リスト内の次の項目を返します。対応する英語用語:「Next」。
  • 「前」: リスト内の前の要素を返します。対応する英語用語:「Previous」。
  • 「検索」: リストに特定の要素が含まれているかどうかを検索し、その位置を返します。対応する英語用語:「Find」。

リストの種類

リストは要素のコンテナであり、各要素にはdataと、リスト内のデータの取得を可能にするその他の情報が含まれます。この情報の性質 (タイプ) は、異なるタイプのリストを特徴付けます。

一般に、次の 2 種類のリストを区別できます。

  • テーブル、
  • リンクされたリスト。
リスト (コンピューティング)について詳しく解説

絵画

要素へのアクセスは、構造内の要素の位置を表すインデックスを使用して行われます。

配列内に存在するデータはメモリ内で連続しています。これにより、配列サイズが固定、つまり変更されなくなります。ただし、一部の高級言語では、用途に応じてサイズが変更される配列が提供されており、これは動的サイズ配列と呼ばれます。ただし、その実装ではリンク リストの原理が使用されます (下記を参照)。

配列は、一連のインデックスで表される複数の次元を持つこともできます。この場合、 n が配列の次元である場合 ( nはゼロ以外の自然整数)、次元1 (シーケンスの最初のインデックス) の配列の要素はそれぞれ、次の別の (サブ) 配列を指します。次元n-1

リンクされたリスト

単純にリンクされたリスト。それぞれ値 12、99、および 37 を持つ 3 つの要素で構成されます。

配列とは異なり、リンク リストのサイズには、使用可能なメモリ以外の制限はありません。この制限は、リンク リストのタイプに応じて、再帰的定義を使用して各要素がリストの 1 つ以上の要素を指すことができるという事実によって克服されます。したがって、リンク リストのサイズを増やすには、単に新しい要素を作成し、リスト内にすでに存在する特定の要素を新しい要素に向けるだけです。

リンク リストには主に 2 つのタイプがあります。

  • 単純にリンクされたリスト: 各要素には、リスト内の次の要素 (または後続要素) へのポインタがあります。ルートは一方向のみです。
  • 二重リンクリスト: 各要素には、次の要素 (または後続要素) と前の要素 (または先行要素) への 2 つのポインターがあります。この旅は、後継者から後継者へ、または前任者から前任者へという、互いに反対の 2 つの方向に行うことができます。

これに、サイクルというプロパティを追加できます。今度は、リンクされたリストがループを形成します。リストの「最後」に到達し、続行しようとするとすぐに、リストの「最初」の要素にいることに気付きます。この場合、チェーンの開始または終了という概念はもはや存在する理由がありません。

vdm
コンピュータプログラミング要素
ソフトウェアライブラリ標準ライブラリ ・ネームスペース ・フレームワーク ・テンプレート・インターフェース ・プログラミングインターフェースAPI
語彙
アルゴリズム • 式 • インデント • コード行 • 演算子 • 擬似コード • 演算子のオーバーロード
機能周り命名規則 • 因数分解 • 入れ子関数 • コールバック関数 • 再帰関数 • ジェネリック性 • オペランド • パラメータ • ポリモーフィズム • プロシージャ •型シグネチャ
オブジェクトの周囲クラス ・ コンストラクター ・ デストラクター ・ カプセル化 ・ 継承 ・ 多重継承 ・ インスタンス ・ メソッド ・ガベージコレクター・ リファレンス
ソースコード
データ構造ツリー • 属性 • 文字 • レコード • ファイル • 先入れ先出し(fifo) • 後入先出し(lifo) •リスト• リンクリスト • スタック • シンボルテーブル • 配列 • ヒープ • 抽象型 • セマフォ
宣言: 型と変数代入 • ポインタ • スコープ • 連想配列 • 列挙型 • 再帰型 • 静的型付け • 変数 • グローバル変数• ローカル変数
制御構造case、do、else、eval、if、for、goto、loop、switch、while
共通機能連結 • インクリメント • malloc • printf
ソフトウェア開発ツール開発環境統合開発環境( IDE ) • ドキュメントジェネレータ • バージョン管理 • モデル • パッチ • 仕様
民間伝承Hello world • シンプルで愚かなままにしてください • エキゾチックなプログラミング言語
カテゴリ:ソフトウェア開発 • カテゴリ:コンピュータプログラミング
  1. قائمة (نوع بيانات مجرد) – arabe
  2. Сьпіс – Belarusian (Taraškievica orthography)
  3. Списък (абстрактен тип данни) – bulgare
  4. Lista (struktura podataka) – bosniaque
  5. Llista (estructura de dades) – catalan
  6. Λίστα (αφηρημένος τύπος δεδομένων) – grec

リスト (コンピューティング)について詳しく解説・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。