>백엔드 개발 >PHP 튜토리얼 >PHP 데이터 구조: 연결 목록의 매력, 동적 데이터 구성 탐구

PHP 데이터 구조: 연결 목록의 매력, 동적 데이터 구성 탐구

WBOY
WBOY원래의
2024-06-04 12:53:57585검색

연결된 목록은 데이터와 포인터가 포함된 일련의 노드를 사용하여 요소를 구성하는 데이터 구조이며, 특히 대규모 데이터 세트를 처리하고 빈번한 삽입/삭제 작업에 적합합니다. 기본 구성 요소에는 노드(데이터 및 다음 노드에 대한 포인터)와 헤드 노드(연결된 목록의 첫 번째 노드를 가리키는)가 포함됩니다. 일반적인 연결 목록 작업에는 추가(꼬리 삽입), 삭제(특정 값) 및 순회가 포함됩니다.

PHP 데이터 구조: 연결 목록의 매력, 동적 데이터 구성 탐구

PHP 데이터 구조: 연결 목록의 매력

소개

연결 목록은 요소가 일련의 노드로 구성되는 선형 데이터 구조로, 각 노드에는 데이터와 다음 노드에 대한 포인터가 포함됩니다. 마디. 배열과 달리 연결된 목록의 요소는 메모리에 연속적으로 저장될 필요가 없으므로 대규모 데이터 세트를 처리하고 삽입 및 삭제 작업이 빈번한 상황에 이상적입니다.

개념

연결된 목록의 기본 구성 요소는 노드입니다. 각 노드는 다음 부분으로 구성됩니다.

  • 데이터: 실제 값을 저장합니다.
  • 포인터(다음): 다음 노드를 가리킵니다.

링크된 목록은 헤드 노드 연결을 통해 서로 상호 작용합니다. 헤드 노드는 연결 리스트의 첫 번째 노드를 가리키는 특수 노드입니다.

작업

다음은 연결 목록에 구현된 몇 가지 일반적인 작업입니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.