検索
ホームページよくある問題リンクリストとは
リンクリストとはJun 24, 2020 pm 12:05 PM
リンクされたリスト

リンクリストとは

リンク リストは、物理ストレージ ユニット上の非連続かつ非順次のストレージ構造です。データ要素の論理的順序は、リンク リスト内のポインタのリンク順序によって実現されます。 。リンク リストは一連のノードで構成され (リンク リストの各要素はノードと呼ばれます)、ノードは実行時に動的に生成できます。各ノードは 2 つの部分で構成されます。1 つはデータ要素を格納するデータ フィールドで、もう 1 つは次のノードのアドレスを格納するポインタ フィールドです。線形テーブルシーケンス構造と比較すると、演算が複雑になります。順序どおりに格納する必要がないため、リンク リストは挿入時に O(1) の複雑さを実現できます。これは、別の線形リストや逐次リストよりもはるかに高速ですが、ノードの検索や特定の番号付きノードへのアクセスには O(n ) 時間、線形テーブルと逐次テーブルの対応する時間計算量はそれぞれ O(logn) と O(1) です。

リンク リスト構造を使用すると、データ サイズを事前に知る必要があるという配列リンク リストの欠点を克服でき、コンピュータのメモリ空間を最大限に活用し、柔軟な動的メモリ管理を実現できます。 。しかし、リンクリストは配列のランダム読み取りの利点を失い、同時にノードのポインタフィールドの増加によりリンクリストのスペースオーバーヘッドが比較的大きくなります。リンク リストの最も明白な利点は、通常の配列で関連する項目を配置する方法が、これらのデータ項目がメモリまたはディスク上で配置される順序とは異なる場合があり、データへのアクセスでは、多くの場合、異なる配置間の切り替えが必要になることです。リンク リストでは、リスト上の任意の場所でノードの挿入と削除が可能ですが、ランダム アクセスは許可されません。リンク リストには、一方向リンク リスト、二重リンク リスト、循環リンク リストなど、さまざまな種類があります。リンク リストは、さまざまなプログラミング言語で実装できます。 Lisp や Scheme などの言語の組み込みデータ型には、リンク リストへのアクセスと操作が含まれます。 C、C、Java などのプログラミング言語やオブジェクト指向言語は、リンク リストを生成するために可変ツールに依存しています。

特長

線形テーブルのリンクされたストレージ表現の特徴は、任意のストレージ ユニットのセットを使用して線形テーブルのデータ要素を格納することです (このストレージ ユニットのセットは、連続的または異なる) 連続的)。したがって、各データ要素とその直接の後続データ要素との間の論理的関係を表現するために、データ要素には、それ自身の情報を格納することに加えて、その直接後続者を示す情報(つまり、ストレージ)も格納する必要がある。直接後継の場所の)。これら 2 つの情報は、線形テーブル内のデータ要素を表す「ノード」を形成します (概要の隣の図を参照)。線形テーブルのリンク ストレージ表現の欠点の 1 つは、数値を見つけるために最初から開始する必要があり、非常に面倒なことです。

状況に応じて、リンク リストの他の拡張を自分で設計することもできます。ただし、連結リストの点と辺は基本的に 1 対 1 に対応するため、辺にはデータが付加されません(最初または最後のノードを除きますが、特別な事情は生じません)。ただし、特殊な場合として、リンク リストがリンク リストのセクション内の前後のポインタの反転をサポートしている場合は、端に反転マークを追加する方が便利な場合があります。

非線形リンク リストの場合は、ツリーやグラフなどの他の関連データ構造を参照できます。また、複数の線形連結リストであるスキップ リストに基づくデータ構造もあり、挿入、削除、検索などの基本操作の速度は平衡二分木と同じ O(nlogn) に達します。

データ要素情報を格納するドメインをデータ ドメイン (ドメイン名を data とする) と呼び、直接後継の格納場所を格納するドメインをポインタ ドメイン (ドメイン名を next とする) と呼びます。 。ポインタフィールドに格納される情報は、ポインタまたはチェーンとも呼ばれます。

それぞれ、、、を表す N 個のノードが順番にリンクされているリンク リストは、線形リストのリンク ストレージ表現と呼ばれます。これは、このようなリンク リストの各ノードにはポインターが 1 つしか含まれていないためです。フィールド であるため、単一リンク リストまたは線形リンク リストとも呼ばれます。

以上がリンクリストとはの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
使用递归方法在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时,则返回指向当前节点的指针作为结果。让我们看看此的各种输入输出场景-输入-List:-1→5→7→12→2→96→33N=3输出−倒数第N个节点为:2解释−第三个节点是2。输入−列表:-12→53→8→19→20→96→33N=8输出-节点不存

PHP 数组和链表的算法时间复杂度比较PHP 数组和链表的算法时间复杂度比较May 07, 2024 pm 01:54 PM

数组和链表的算法时间复杂度比较:访问数组O(1),链表O(n);插入数组O(1),链表O(1)/O(n);删除数组O(1),链表O(n);搜索数组O(n),链表O(n)。

将一个以链表表示的数字加1将一个以链表表示的数字加1Aug 29, 2023 pm 09:17 PM

数字的链表表示是这样提供的:链表的所有节点都被视为数字的一位数字。节点存储数字,使得链表的第一个元素保存数字的最高有效位,链表的最后一个元素保存数字的最低有效位。例如,数字202345在链表中表示为(2->0->2->3->4->5)。要向这个表示数字的链表添加1,我们必须检查列表中最低有效位的值。如果小于9就可以了,否则代码将更改下一个数字,依此类推。现在让我们看一个示例来了解如何做到这一点,1999表示为(1->9->9->9)并添加1应该将其

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数据结构:链表的魅力,探索动态数据组织Jun 04, 2024 pm 12:53 PM

链表是一种数据结构,采用一系列带有数据和指针的节点组织元素,特别适合处理大型数据集和频繁的插入/删除操作。它的基本组成部分包括节点(数据和指向下一个节点的指针)和头节点(指向链表中第一个节点)。常见链表操作包括:添加(尾部插入)、删除(特定值)和遍历。

Go 语言中的链表操作怎样实现?Go 语言中的链表操作怎样实现?Jun 10, 2023 pm 10:55 PM

链表(LinkedList)是一种常见的数据结构,它由一系列结点(Node)组成,每一个结点包含两个关键属性:数据域(Data)和指针域(Next)。其中,数据域用于存储实际数据,指针域则指向下一个结点。通过这种方式,链表以一种灵活的方式存储数据,适用于许多不同的应用场景中。在Go语言中,链表结构也得到了良好的支持。Go的内置标准库中提供了cont

Python程序:在链表的第一个和最后一个位置添加元素Python程序:在链表的第一个和最后一个位置添加元素Aug 23, 2023 pm 11:17 PM

在Python中,链表是一种线性数据结构,它由一系列节点组成,每个节点包含一个值和对链表中下一个节点的引用。在本文中,我们将讨论如何在Python中将元素添加到链表的第一个和最后一个位置。LinkedListinPython链表是一种引用数据结构,用于存储一组元素。它在某种程度上类似于数组,但是在数组中,数据存储在连续的内存位置中,而在链表中,数据不受此条件限制。这意味着数据不是按顺序存储,而是以随机的方式存储在内存中。Thisraisesonequestionthatis,howwecanac

golang如何实现链表golang如何实现链表Dec 14, 2023 pm 04:37 PM

实现链表的方法:1、定义了一个Node结构体来表示链表的节点,每个节点包含一个数据项和一个指向下一个节点的指钁;2、定义了一个LinkedList结构体来表示链表本身,其中包含一个指向链表头节点的指针;3、实现了两个方法,append用于在链表末尾插入节点,printList用于打印链表的元素;4、通过这种方式,可以使用Go语言的结构体和指针来实现链表的基本功能。

ホット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ヘンタイを無料で生成します。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。