PHP单链表的实现代码

下面是关于“PHP单链表的实现代码”的完整攻略:

一、单链表的概念

单链表是一种线性数据结构。与数组不同,链表中的元素在内存中不是连续放置的,每个元素由一个存储本身元素的节点和一个指向下一个元素的指针组成。

二、单链表的实现

1. 定义单链表节点类

首先,我们需要定义一个节点类,用来表示单链表中的节点。每个节点应该包含一个数据域(存放节点的值)和一个指针域(指向下一个节点)。

class ListNode {
    public $val; // 节点的值
    public $next; // 指向下一个节点的指针

    public function __construct($val)
    {
        $this->val = $val;
        $this->next = null;
    }
}

2. 定义单链表类

接下来,我们需要定义一个单链表类,用来对链表进行操作。在定义单链表类时,我们需要定义两个成员变量:

  • head:头节点,表示链表的起始位置。
  • size:链表的大小,表示链表中节点的个数。
class LinkedList {
    private $head;
    private $size;

    public function __construct()
    {
        $this->head = null;
        $this->size = 0;
    }

    // 插入节点
    public function insert($val)
    {
        $node = new ListNode($val);

        if (!$this->head) {
            $this->head = $node;
        } else {
            $current = $this->head;
            while ($current->next) {
                $current = $current->next;
            }
            $current->next = $node;
        }

        $this->size++;
    }

    // 删除节点
    public function delete($val)
    {
        if (!$this->head) {
            return false;
        }

        if ($this->head->val === $val) {
            $this->head = $this->head->next;
            $this->size--;
            return true;
        }

        $current = $this->head;
        while ($current->next && $current->next->val !== $val) {
            $current = $current->next;
        }

        if ($current->next) {
            $current->next = $current->next->next;
            $this->size--;
            return true;
        }

        return false;
    }

    // 获取链表长度
    public function getSize()
    {
        return $this->size;
    }

    // 显示链表
    public function display()
    {
        $nodes = [];

        $current = $this->head;
        while ($current) {
            $nodes[] = $current->val;
            $current = $current->next;
        }

        echo implode(' -> ', $nodes);
    }
}

3. 示例说明

示例 1

下面展示一个单链表的创建、插入节点和显示链表的过程:

$linkedList = new LinkedList(); // 创建一个单链表

$linkedList->insert(3); // 插入一个节点,值为3
$linkedList->insert(5); // 插入一个节点,值为5
$linkedList->insert(7); // 插入一个节点,值为7

$linkedList->display(); // 显示链表,输出:3 -> 5 -> 7

示例 2

下面展示一个单链表的删除节点的过程:

$linkedList = new LinkedList(); // 创建一个单链表

$linkedList->insert(3); // 插入一个节点,值为3
$linkedList->insert(5); // 插入一个节点,值为5
$linkedList->insert(7); // 插入一个节点,值为7

$linkedList->delete(5); // 删除值为5的节点

$linkedList->display(); // 显示链表,输出:3 -> 7

三、总结

通过上面的攻略,我们详细讲解了如何在PHP中实现单链表,包括定义单链表节点类、定义单链表类、插入、删除和显示单链表,最后通过两个示例进一步说明了如何操作单链表。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP单链表的实现代码 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • php修改数组键名的方法示例

    下面是关于“php修改数组键名的方法示例”的详细攻略: 一、什么是数组键名? 在PHP中,数组是一种可以用于存储一系列数据的数据结构。数组是由多个“元素”组成,每个元素都有一个对应的“键”和“值”。在数组中,键通常是一个字符串或数字,而值可以是任何类型的数据。 数组的键名是唯一的,这意味着不能有重复的键名。键名为数字的数组也可以称之为“索引数组”,而键名为字…

    PHP 2023年5月26日
    00
  • php实现简单洗牌算法

    可以通过下面的步骤来实现简单的洗牌算法。 基本思路 生成一个数组,包含待打乱的元素。 循环每个元素,随机交换它和数组中的另一个元素。 循环结束后,数组元素的顺序已被打乱。 代码实现 function shuffle_array($arr) { $len = count($arr); for ($i = 0; $i < $len; $i++) { $ra…

    PHP 2023年5月23日
    00
  • php字符串过滤strip_tags()函数用法实例分析

    【标题】PHP字符串过滤strip_tags()函数用法实例分析 【简述】本篇攻略将介绍PHP字符串过滤函数strip_tags()的使用方法,让大家了解strip_tags()函数能够对字符串进行什么样的过滤操作,以及如何在实际开发中应用这一函数。 【正文】 一、strip_tags()函数的概述 strip_tags()是PHP中一种常用的字符串过滤函数…

    PHP 2023年5月26日
    00
  • 抓取整个网页保存为图片的实用工具 Web2Pic Pro

    抓取整个网页保存为图片的实用工具 Web2Pic Pro Web2Pic Pro是一款可以将整个网页抓取保存为图片的实用工具,它可以方便我们将想要的网页内容保存为图片,便于离线查看和分享。以下是Web2Pic Pro的完整攻略。 步骤1:安装Web2Pic Pro Web2Pic Pro是一款付费软件,需要购买后才能使用,我们可以到官方网站进行购买和下载安装…

    PHP 2023年5月27日
    00
  • PHP上传文件参考配置大文件上传

    下面我将详细讲解如何使用PHP上传大文件以及相关配置。 为什么需要大文件上传 在前后端分离的开发模式下,经常需要上传大型文件,比如视频、图片、文档等。传统的HTTP文件上传机制因为单次上传数据大小受限制,而无法满足大文件上传的需求。消息队列、断点续传、进度条、支持多文件上传等功能都会更加复杂。 为了解决这些问题,就涌现了一系列开源的上传组件。大多数上传组件采…

    PHP 2023年5月23日
    00
  • php实现zip文件解压操作

    以下是详细讲解“php实现zip文件解压操作”的完整攻略: 1. zip扩展的安装 zip扩展是用于PHP解压Zip文件的核心扩展,需要安装在服务器上才能使用。以下是zip扩展的安装方法: 在Linux系统下使用apt-get安装 sudo apt-get install php-zip 在Windows系统下,需要在php.ini中打开zip扩展的支持 在…

    PHP 2023年5月26日
    00
  • PHP实现的一致性Hash算法详解【分布式算法】

    PHP实现的一致性Hash算法详解【分布式算法】 什么是一致性Hash算法 在分布式系统中,一个广泛使用的问题是分布式的负载均衡,如何使得请求尽可能均衡的分发到不同的节点上,而不是集中在某一个或几个节点上。一致性Hash算法就是用来解决这个问题的一种算法。 一致性Hash算法的核心思想是将所有节点映射到一个环上,将请求也映射到环上,然后通过顺时针找到的第一个…

    PHP 2023年5月26日
    00
  • php数组添加与删除单元的常用函数实例分析

    PHP数组添加与删除单元的常用函数实例分析 在PHP中,数组是一种非常常用的数据类型,经常会涉及到添加新元素、修改元素以及删除元素的操作。本篇文章将讲解PHP中数组添加与删除单元的常用函数,帮助读者更好的掌握这一知识点。 一、添加元素的两种方法 1.1 array_push() array_push()函数可向数组的末尾添加一个或多个元素,示例如下: $fr…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部