PHP单链表的实现代码

yizhihongxing

下面是关于“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来实现递归提成方案。 什么是递归提成方案? 递归提成方案是一种常见的提成计算模式,通常在多层级销售中使用。具体而言,该模式要求每个销售人员都可以获得自己的提成,同时还可以从他们发展的销售人员的提成中获取一个额外的提成。这种计算方式可以一直递归至销售人员成为顶级销售商或顶级代理商。 实现递归提成方案的步骤 1.创建销售人员数据结构…

    PHP 2023年5月26日
    00
  • 微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)

    微信小程序授权登录解决方案攻略 概述 微信小程序授权登录是指用户可以通过微信账号的方式快速登录小程序,授权登录可以让用户快速访问小程序中的某些功能,提升用户体验。接下来,将一步步为大家介绍微信小程序授权登录解决方案的代码实现过程。 控件准备 对于微信小程序的授权登录,需要用到微信提供的 button 和 open-type=getUserInfo 控件,其中…

    PHP 2023年5月30日
    00
  • PHP代码优化的53个细节

    下面我来为你详细讲解“PHP代码优化的53个细节”的完整攻略。 1. 代码细节 1.1 变量使用 尽量使用局部变量,减少全局变量使用。 尽量在方法内声明变量,减少变量的过度使用。 尽量使用静态变量,避免每次调用函数重新初始化变量。 示例1: // 使用全局变量 $global_var = 10; function func() { global $globa…

    PHP 2023年5月30日
    00
  • php使用curl通过代理获取数据的实现方法

    当我们通过 PHP 进行网络请求时,https://stackoverflow.com 这种 https 前缀的网站往往会因为证书问题无法访问。此时,我们可以考虑使用 cURL 库来完成网络请求并绕过证书验证。同时,若需要使用代理来获取数据,我们也可以通过 cURL 来实现。以下是详细讲解 “php使用curl通过代理获取数据的实现方法”的攻略。 基本环境准…

    PHP 2023年5月26日
    00
  • PHP实现文件上传和多文件上传

    下面是详细讲解“PHP实现文件上传和多文件上传”的完整攻略。 文件上传 文件上传是指将文件从客户端上传到服务器,PHP实现文件上传的步骤如下: 在前端页面添加文件上传表单,例如: <form action="upload.php" method="post" enctype="multipart/for…

    PHP 2023年5月26日
    00
  • PHP将字符分解为多个字符串的方法

    要将字符串在 PHP 语言中分解成多个字符串可以使用多种方法,本文将为大家介绍其中两种最常用的方法。 1. 使用 str_split() 函数 str_split() 函数可以将字符串拆分为数组,每个数组元素为单个字符,是 PHP 中最简单的将字符串分解成字符的方法。 代码示例如下: <?php $str = "Hello World!&qu…

    PHP 2023年5月26日
    00
  • php控制反转与依赖注入举例讲解

    PHP控制反转与依赖注入举例讲解 在PHP中,控制反转(Inversion of Control,IoC)和依赖注入(Dependency Injection,DI)是两种常用的设计模式,它可以帮助我们更好地管理对象之间的依赖关系,提高代码的可维护性和可扩展性。本文将详细讲PHP控制反转与依赖注入的使用攻略,包括基本概念、实现方式和示例说明等。 基本概念 P…

    PHP 2023年5月12日
    00
  • PHP文件读写操作相关函数总结

    PHP文件读写操作相关函数总结 PHP作为一种Web开发语言,对于文件的读写操作自然是必不可少的。在本文中,我们将总结一些常用的PHP文件读写相关函数,以便开发者更好的熟悉这些函数,以及如何正确使用它们。 文件读操作 PHP文件读操作主要由 fopen、fgets、feof 以及 fclose 这些函数组成。其中,fopen 函数用来打开文件,fgets 函…

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