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日

相关文章

  • nginx简单配置多个php服务实例教程

    下面是“nginx简单配置多个php服务实例教程”的完整使用攻略,包括问题原因、解决方法和两个示例说明。 问题原因 在使用配置多个php服务实例时可能会出现端口冲突的问题。这是因为nginx默认使用的端口是80,而php服务实默认使用的端口是9000,两者会发生冲突。 解决方法 以下是解决nginx配置多个php服务实例的方法: 修改php服务实例的端口 在…

    PHP 2023年5月12日
    00
  • php中判断数组相等的方法以及数组运算符介绍

    PHP中判断数组相等的方法以及数组运算符介绍 判断数组相等的方法 在PHP中判断两个数组是否相等,可以使用array_diff()函数和count()函数来进行比较。 具体步骤如下: 分别使用array_diff()函数对两个数组进行比较,将返回差异的元素。 使用count()函数分别对两个数组以及差异数组进行计数操作。 判断两个数组长度是否相等,以及差异数…

    PHP 2023年5月26日
    00
  • 使用lua实现php的print_r()函数功能

    使用Lua实现类似于PHP的print_r()函数,可以帮助我们更好的了解一些数据类型及数据结构的内部结构。下面我将提供一些基本步骤以及示例代码来解释如何实现这个功能。 步骤 定义一个递归函数(recursive function),该函数可以检查数据类型,如果是表格(table)类型,则继续遍历该表格并在每个元素之间添加逗号和换行符。 如果遇到嵌套的表格,…

    PHP 2023年5月26日
    00
  • php文件上传的两种实现方法

    下面是关于php文件上传的两种实现方法的完整攻略。 实现方法一:使用原生的PHP函数 使用原生的PHP函数可以实现文件上传,可以通过以下步骤来实现: 首先在前端页面中添加一个表单,其中包含一个file字段,用于选择文件。 <form action="upload.php" method="post" enctyp…

    PHP 2023年5月26日
    00
  • 使用php数据缓存技术提高执行效率

    在PHP中,使用数据缓存技术可以提高执行效率,减少数据库查询和文件读写操作,从而加快网站的响应速度。本文将介绍PHP中常用的数据缓存技术,包括Memcached、Redis、APC和文件缓存,以及它们的使用方法和示例。 1. Memcached Memcached是一种高性能的分布式内存对象缓存系统,可以用于缓存数据库查询结果、API响应、页面片段等数据。以…

    PHP 2023年5月12日
    00
  • 深思 PHP 数组遍历的差异(array_diff 的实现)

    深思 PHP 数组遍历的差异 在 PHP 语言中,对于数组的操作与遍历是比较常见的操作,其中 array_diff 函数是常用的在两个数组之间取出差集的函数之一。但是这个函数的实现却有些不太一样,下面我们来探究一下。 array_diff 示例 $arr1 = [‘a’, ‘b’, ‘c’, ‘d’]; $arr2 = [‘b’, ‘c’, ‘e’]; $r…

    PHP 2023年5月26日
    00
  • MathType怎么在字母正上方添加黑点?

    要在MathType中让字母正上方添加黑点,需要使用MathType的自定义格式功能。下面是详细的攻略: 打开MathType,选择要添加黑点的字母,比如“A”。 点击MathType菜单栏上的“格式”菜单,选择“自定义”。 在弹出的“自定义格式”对话框中,选择“上标”选项卡,并勾选“高级”复选框。 在“高级上标格式”的“开头”文本框中输入“\bullet …

    PHP 2023年5月26日
    00
  • 微信小程序实战之登录页面制作(5)

    下面是详细的攻略: 微信小程序实战之登录页面制作(5) 1. 登录验证和获取用户信息 首先,在 login.js 文件中,我们需要编写登录验证和获取用户信息的代码。具体步骤如下: 定义全局变量 app,用于保存小程序的实例 在 onLoad 函数中,获取小程序的实例,并将其保存到全局变量 app 中 在 getUserInfo 函数中,调用 wx.getUs…

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