目次
1. 連結リストの概要
2. 単結合リストの定義
1. 定義
3. 単結合リストの操作
1. 挿入操作
1) 挿入シミュレーション
2) 単一リンクリストのノードに i 番目のデータを挿入するアルゴリズムのアイデア
2. 削除操作
1) シミュレーションの削除
2) 単一リンクリストの i 番目のデータノードを削除するアルゴリズムのアイデア
4. 単一リンクリスト構造とシーケンシャルテーブル構造の比較
ホームページ よくある問題 リンクされたリストは、どのような記憶構造に格納される線形リストです

リンクされたリストは、どのような記憶構造に格納される線形リストです

Nov 22, 2021 pm 03:04 PM
収納構造 リンクされたリスト

リンク リストは、「連鎖」ストレージ構造に格納される線形リストです。リンク リストのデータ要素が占めるストレージ ユニット アドレスは、連続または不連続にすることができます。対応するストレージ スペースは、必要に応じて一時的かつ動的に割り当てることができます。データ要素間の論理関係は、「チェーン」として表現できます。

リンクされたリストは、どのような記憶構造に格納される線形リストです

このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。

シーケンシャル テーブル ストレージ構造の欠点を克服し、ストレージ スペースを最大限に活用し、操作効率を向上させるために、リニア テーブルは別のストレージ構造 - リンク ストレージ構造 を使用できます。 線形リストの連結された記憶構造を「リンク リスト」と呼びます

1. 連結リストの概要

データ要素が占める記憶単位のアドレスリンクされたリストの は連続的であることも、不連続であることもあり、対応する記憶領域は必要に応じて一時的かつ動的に割り当てることができ、データ要素間の論理関係は「チェーン」として表現できます。

リンク リストの挿入と削除にはデータ要素を移動する必要はなく、チェーンを変更するだけで済みます。

リンクリストの分類:

1. リンクリストのメモリ割り当て方法による分類

①動的リンクリスト

②静的リンクリスト

2 .リンク方法による分類

①単一リンクリスト

②循環リンクリスト

③ダブルリンクリスト

(すべて動的リンクリスト)

2. 単結合リストの定義

1. 定義

各データ要素 ai とその直接の後続データ要素 ai 1 の間の論理関係を表現するには、 を除く各データ要素 ai は、独自の情報を格納することに加えて、その直接の後続を示す情報も格納する必要があります(後継のストレージの場所-アドレス)。 データ要素情報を格納するフィールドを

データ フィールド と呼び、直後の後続位置を格納するフィールドを ポインタ フィールド#と呼びます# #、ポインタ領域に格納される情報はポインタまたはチェーンと呼ばれます。 これら 2 つの情報部分は、

node

と呼ばれるデータ要素 ai のストレージ イメージを構成します。 n 個のノードがリンク リストにリンクされます。リンク リストは、線形リスト (a1、a2、a3、...、an) のリンクされた記憶構造です。これは、リンク リストの各ノードにはポインタが 1 つだけ含まれるためです。ドメインなので、single

リンク リスト と呼ばれます。 線形リストには常に先頭と末尾があり、リンクされたリストも例外ではありません。 リンク リスト内の単一リンク リストの最初のノードへのポインタは、

ヘッド ポインタ と呼ばれます。リンク リスト全体へのアクセスは先頭から開始する必要があります。ポインタと後続の各ノード ポイントは、前のノードの後続ポインタが指す位置です。 リンクされたリストの最後のノードのポインタは、「empty (通常は NULL で表されます)」、つまり NULL ポインタです。 連結リストに対するさまざまな操作を容易に行うために、単一連結リストの最初のデータノードの前に同じ種類のノードが設定され、このノードをヘッドノードと呼びます。

ヘッド ノードのデータ フィールドには、リンク リストの長さなどの特別なフラグ情報を格納できますが、データを格納することはできません。

リンクされたリストの最初のデータ ノードと最後のノードは、

先頭ノードと末尾ノード

とも呼ばれます。

2. ヘッド ポインターとヘッド ノードの類似点と相違点

ヘッド ポインター:

ヘッド ポインターリンクリストを参照します 最初のノードへのポインタ リンクリストに先頭ノードがある場合は、先頭ノードへのポインタです。

    先頭ポインタは識別機能を持ち、リンクリストの名前としてよく使われます。
  • リンクされたリストが空かどうかに関係なく、先頭ポインタは空ではありません。
  • ヘッド ポインタはリンク リストの必須要素です。
  • ヘッド ノード:

ヘッド ノードは、操作の統一と利便性を目的として設けられ、最初の要素のノードとそのデータ フィールドの前に配置されます。意図的ではない。

    先頭ノードでは、先頭要素ノードの前にノードを挿入したり、先頭ノードを削除したりする操作が他のノードと統一されます。
  • ヘッド ノードは、リンク リストの必須要素である必要はありません。
  • 3. コードのデモ
/*线性表的单链表存储结构*/
/*结点定义*/
typedef struct Node
{
    ElemType data;
    struct Node *next;
}Node;

/*单链表定义*/
typedef struct Node *LinkList;
ログイン後にコピー

3. 単結合リストの操作

1. 挿入操作

1) 挿入シミュレーション

要素 e を格納するノードを s として、ai に s を挿入します。ノードの背後で操作するにはどうすればよいですか?

考察: 挿入された 2 つのコードは交換できるでしょうか?

いいえ、切り替えた場合、s のポインター フィールドが ai 1 のアドレスを指していないため、ai 1 などの後続の要素は見つかりません。

2) 単一リンクリストのノードに i 番目のデータを挿入するアルゴリズムのアイデア

  • リンクリストの最初のノードを指すノード p を宣言します。 initialize j=1;
  • j
  • p が最後に空の場合リンクリストの i 番目の要素が存在しないことを意味します; 検索が成功した場合は、空のノード s を生成します (malloc 関数を使用)
  • データ要素 e を s-> に代入します。データ (s->data=e;
  • 標準ステートメントを挿入: s->next=p->next;p->next=s;
  • 正常に戻りました。

2. 削除操作

1) シミュレーションの削除

要素 ai を格納するノードを q とし、単一リンクからノード q を削除する操作を行う。リストが実装される予定です。

2) 単一リンクリストの i 番目のデータノードを削除するアルゴリズムのアイデア

  • を指すノード p を宣言します。リンク リストの最初のノードを指し、j=1;
  • を初期化します。j を指します。
  • p がリンクリストの最後に到達した場合 空の場合は、i 番目の要素が存在しないことを意味し、検索が成功した場合、ノード p->next は削除され、q に割り当てられます
  • . 標準ステートメントを挿入します: p->next=q->next;
  • q ノードを e に割り当てます、つまり e=q->data;
  • q ノードを解放します
  • 正常に戻りました。

4. 単一リンクリスト構造とシーケンシャルテーブル構造の比較

ストレージ方式:

  • シーケンシャルテーブルは、連続ストレージユニットを使用してデータを保存します。シーケンス内の線形テーブル データ要素
  • 単一リンク リストはリンク ストレージ構造を採用し、任意のストレージ ユニットのセットを使用して線形テーブル要素を格納します

時間パフォーマンス:

①検索

  • 配列テーブルO(1)
  • 単一リンクリストO(n)

②挿入と削除

  • シーケンス テーブル O (n)
  • 単一リンク リスト O(1)

スペース パフォーマンス:

  • シーケンス テーブルには、事前に割り当てられたストレージが必要ですスペースが大きすぎると無駄になります。小さすぎるとオーバーフローが発生しやすくなります。
  • 単一リンク リストには、必要なだけのストレージ スペースを事前に割り当てる必要はありません。割り当てられ、要素の数に制限はありません

関連する知識の詳細については、FAQ 列を参照してください。

以上がリンクされたリストは、どのような記憶構造に格納される線形リストですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Linux ext2 ファイル システムの物理ストレージ構造についての詳細な説明 Linux ext2 ファイル システムの物理ストレージ構造についての詳細な説明 Mar 14, 2024 pm 09:06 PM

Linuxext2 ファイル システムは、ほとんどの Linux オペレーティング システムで使用されるファイル システムであり、効率的なディスク ストレージ構造を使用してファイルとディレクトリのストレージを管理します。 Linuxext2 ファイル システムの物理ストレージ構造を詳しく調べる前に、まずいくつかの基本概念を理解する必要があります。 ext2 ファイル システムでは、データはファイル システム内で割り当て可能な最小単位であるデータ ブロック (ブロック) に格納されます。各データ ブロックのサイズは固定で、通常は 1KB、2KB、または 4KB です。

再帰的メソッドを使用して、C++ で最後のリンク リストから n 番目のノードを検索します。 再帰的メソッドを使用して、C++ で最後のリンク リストから n 番目のノードを検索します。 Sep 15, 2023 pm 05:53 PM

単一リンクされたリストと入力として正の整数 N が与えられます。目標は、再帰を使用して、指定されたリストの末尾から N 番目のノードを見つけることです。入力リストにノード a→b→c→d→e→f があり、N が 4 の場合、最後から 4 番目のノードは c になります。まず、リスト内の最後のノードまでトラバースし、再帰的 (バックトラッキング) 増分カウントから戻るときにスキャンします。 count が N に等しい場合、現在のノードへのポインタが結果として返されます。このためのさまざまな入出力シナリオを見てみましょう - 入力 - リスト: -1→5→7→12→2→96→33N=3 出力 - 最後から N 番目のノードは: 2 説明 - 3 番目のノードは 2 です。入力 - リスト: -12→53→8→19→20→96→33N=8 出力 - ノードが存在しません

PHP SPL データ構造: プロジェクトにスピードと柔軟性をもたらします PHP SPL データ構造: プロジェクトにスピードと柔軟性をもたらします Feb 19, 2024 pm 11:00 PM

PHPSPL データ構造ライブラリの概要 PHPSPL (標準 PHP ライブラリ) データ構造ライブラリには、さまざまなデータ構造を保存および操作するためのクラスとインターフェイスのセットが含まれています。これらのデータ構造には、配列、リンク リスト、スタック、キュー、セットが含まれており、それぞれがデータを操作するためのメソッドとプロパティの特定のセットを提供します。配列 PHP では、配列は一連の要素を格納する順序付けされたコレクションです。 SPL 配列クラスは、ソート、フィルタリング、マッピングなどのネイティブ PHP 配列の拡張機能を提供します。 SPL 配列クラスの使用例を次に示します。 useSplArrayObject;$array=newArrayObject(["foo","bar","baz"]);$array

PHP 配列とリンク リストのアルゴリズム時間計算量の比較 PHP 配列とリンク リストのアルゴリズム時間計算量の比較 May 07, 2024 pm 01:54 PM

配列とリンク リストのアルゴリズムの時間計算量の比較: 配列 O(1) へのアクセス、リンク リスト O(n)、配列 O(1) の挿入、配列 O(1) の削除。 )、リンク リスト O(n) (n); 検索配列 O(n)、リンク リスト O(n)。

リンクリストで表される数値に 1 を加算します。 リンクリストで表される数値に 1 を加算します。 Aug 29, 2023 pm 09:17 PM

数値のリンク リスト表現は次のように提供されます。リンク リストのすべてのノードは、数値の 1 桁とみなされます。ノードは、リンク リストの最初の要素が数値の最上位桁を保持し、リンク リストの最後の要素が数値の最下位桁を保持するように数値を格納します。たとえば、数値 202345 は、リンク リストでは (2->0->2->3->4->5) として表されます。数値を表すこのリンク リストに 1 を追加するには、リスト内の最下位ビットの値をチェックする必要があります。 9 より小さい場合は問題ありませんが、それ以外の場合はコードによって次の番号などが変更されます。次に、これを行う方法を理解するための例を見てみましょう。1999 年は (1->9->9->9) として表され、1 を追加すると変更されます。

PHP データ構造: リンク リストの魅力、動的なデータ構成の探求 PHP データ構造: リンク リストの魅力、動的なデータ構成の探求 Jun 04, 2024 pm 12:53 PM

リンク リストは、データとポインターを含む一連のノードを使用して要素を編成するデータ構造であり、大規模なデータ セットや頻繁な挿入/削除操作の処理に特に適しています。その基本コンポーネントには、ノード (データと次のノードへのポインター) とヘッド ノード (リンク リストの最初のノードを指す) が含まれます。一般的なリンク リスト操作には、追加 (末尾の挿入)、削除 (特定の値)、および走査が含まれます。

Python プログラム: リンクされたリストの最初と最後の位置に要素を追加します Python プログラム: リンクされたリストの最初と最後の位置に要素を追加します Aug 23, 2023 pm 11:17 PM

Python では、リンク リストは一連のノードで構成される線形データ構造であり、各ノードには値とリンク リスト内の次のノードへの参照が含まれます。この記事では、Python でリンク リストの最初と最後の位置に要素を追加する方法について説明します。 Python の LinkedList リンク リストは、要素のセットを格納するために使用される参照データ構造です。これはある意味配列に似ていますが、配列ではデータは連続したメモリ位置に格納されますが、リンク リストではデータはこの条件の影響を受けません。これは、データが順番にメモリに保存されるのではなく、ランダムにメモリに保存されることを意味します。これにより、どうやってできるのかという疑問が生じます

Go言語でリンクリスト操作を実装するにはどうすればよいですか? Go言語でリンクリスト操作を実装するにはどうすればよいですか? Jun 10, 2023 pm 10:55 PM

LinkedList は一連のノードで構成される一般的なデータ構造であり、各ノードにはデータ フィールド (Data) とポインター フィールド (Next) という 2 つのキー属性が含まれています。このうち、データフィールドは実際のデータを格納するために使用され、ポインタフィールドは次のノードを指します。このように、リンク リストは、さまざまなアプリケーション シナリオに適した柔軟な方法でデータを保存します。 Go 言語では、リンク リスト構造も十分にサポートされています。 Cont は Go の組み込み標準ライブラリで提供されます