ホームページ  >  記事  >  バックエンド開発  >  PHP データ構造: リンク リストの魅力、動的なデータ構成の探求

PHP データ構造: リンク リストの魅力、動的なデータ構成の探求

WBOY
WBOYオリジナル
2024-06-04 12:53:57551ブラウズ

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

PHP データ構造: リンク リストの魅力、動的なデータ構成の探求

PHP データ構造: リンク リストの魅力

はじめに

リンク リストは、要素が一連のノードとして編成された線形データ構造であり、各ノードにはデータと次のノードへのポインターが含まれています。ノード。配列とは異なり、リンク リストの要素はメモリ内に連続して格納する必要がないため、大規模なデータ セットの処理や、挿入および削除操作が頻繁に行われる状況に最適です。

コンセプト

リンクされたリストの基本コンポーネントはノードであり、各ノードは次の部分で構成されます:

  • データ: 実際の値を格納します
  • ポインター (next): 次のノードを指します

リンクされたリストは、ヘッド ノード接続を通じて相互に対話します。ヘッド ノードは、リンク リストの最初のノードを指す特別なノードです。

操作

以下は、リンク リストに実装される一般的な操作の一部です:

class Node {
    public $data;
    public $next;
}

class LinkedList {
    private $head;

    // 添加新节点到尾部
    public function append($data) {
        $new_node = new Node();
        $new_node->data = $data;

        if ($this->head === null) {
            $this->head = $new_node;
        } else {
            $current_node = $this->head;
            while ($current_node->next !== null) {
                $current_node = $current_node->next;
            }
            $current_node->next = $new_node;
        }
    }

    // 从链表中删除特定值
    public function delete($data) {
        if ($this->head === null) {
            return;
        }

        if ($this->head->data === $data) {
            $this->head = $this->head->next;
            return;
        }

        $current_node = $this->head;
        while ($current_node->next !== null) {
            if ($current_node->next->data === $data) {
                $current_node->next = $current_node->next->next;
                return;
            }
            $current_node = $current_node->next;
        }
    }

    // 遍历链表并打印数据
    public function traverse() {
        $current_node = $this->head;
        while ($current_node !== null) {
            echo $current_node->data . " ";
            $current_node = $current_node->next;
        }
    }
}

実際のケース

リンク リストを作成し、いくつかの操作を実行します:

$list = new LinkedList();

$list->append(10);
$list->append(20);
$list->append(30);

echo "链表:";
$list->traverse();
echo PHP_EOL;

$list->delete(20);

echo "删除 20 后:" ;
$list->traverse();
echo PHP_EOL;

出力:

链表:10 20 30
删除 20 后:10 30

以上がPHP データ構造: リンク リストの魅力、動的なデータ構成の探求の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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