php实现单链表的实例代码

下面是详细的“PHP实现单链表的实例代码”的攻略:

简介

单链表是一种常用的数据结构,它是由节点组成的一系列元素的集合。每个节点包含了指向下一个节点的指针(或者称为链接)。单链表的好处是可以很方便地在任意位置插入或删除元素,但访问节点的时间复杂度是O(n)。

我们使用PHP代码来实现一个单链表类,名为LinkedList,其中包含下列方法:

  • __construct():构造函数。
  • add($data):在链表末尾插入节点。
  • insert($data, $position):在指定位置插入节点。
  • delete($position):删除指定位置的节点。
  • display():打印链表内容。

注意,为了方便,我们将从0开始计数,链表的第一个节点的位置为0。

完整代码

下面是LinkedList类的完整代码,一共包含了上述5个方法:

class LinkedList {
    private $head;
    private $count;

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

    public function add($data) {
        $new_node = new ListNode($data);
        if ($this->head === null) {
            $this->head = &$new_node;
        } else {
            $current = $this->head;
            while ($current->getNext() !== null) {
                $current = $current->getNext();
            }
            $current->setNext($new_node);
        }
        $this->count++;
    }

    public function insert($data, $position) {
        if ($position < 0 || $position > $this->count) {
            return false;
        }
        $new_node = new ListNode($data);
        if ($position === 0) {
            $new_node->setNext($this->head);
            $this->head = &$new_node;
        } else {
            $current = $this->head;
            $index = 0;
            while ($index < ($position - 1)) {
                $current = $current->getNext();
                $index++;
            }
            $new_node->setNext($current->getNext());
            $current->setNext($new_node);
        }
        $this->count++;
        return true;
    }

    public function delete($position) {
        if ($position < 0 || $position >= $this->count) {
            return false;
        }
        if ($position === 0) {
            $this->head = $this->head->getNext();
        } else {
            $current = $this->head;
            $index = 0;
            while ($index < ($position - 1)) {
                $current = $current->getNext();
                $index++;
            }
            $current->setNext($current->getNext()->getNext());
        }
        $this->count--;
        return true;
    }

    public function display() {
        if ($this->head === null) {
            return;
        }
        $current = $this->head;
        while ($current !== null) {
            echo $current->getData() . " ";
            $current = $current->getNext();
        }
    }
}

class ListNode {
    private $data;
    private $next;

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

    public function getData() {
        return $this->data;
    }

    public function setData($data) {
        $this->data = $data;
    }

    public function getNext() {
        return $this->next;
    }

    public function setNext($next) {
        $this->next = $next;
    }
}

在上面的代码中,ListNode类表示一个节点,LinkedList类表示整个单链表。

示例说明

下面是两个示例,说明如何使用LinkedList类。假设要创建一个包含5个元素的单链表。

示例1:添加元素

$ll = new LinkedList();
$ll->add(10);
$ll->add(20);
$ll->add(30);
$ll->add(40);
$ll->add(50);
$ll->display(); // 输出:10 20 30 40 50

在上面的代码中,首先创建一个空的单链表,然后调用add方法5次,在单链表末尾依次插入5个元素,最后调用display方法输出单链表的内容。

示例2:插入元素

$ll = new LinkedList();
$ll->add(10);
$ll->add(20);
$ll->add(30);
$ll->add(50);
$ll->insert(40, 3);
$ll->display(); // 输出:10 20 30 40 50

在上面的代码中,首先创建一个包含4个元素的单链表,然后调用insert方法,在位置3处插入元素40,最后调用display方法输出单链表的内容。

这些示例可能并不代表所有情况,但它们可以帮助您更好地了解如何使用LinkedList类。

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

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

相关文章

  • PHP获取当前执行php文件名的代码

    获取当前执行 PHP 文件名的代码可以使用各种不同的方法,本文将介绍其中两种常用且易于理解的方法。 方式1:使用$_SERVER[‘SCRIPT_FILENAME’]变量 可以使用$_SERVER[‘SCRIPT_FILENAME’]变量来获取服务器上当前正在运行的 PHP 脚本的完整路径和文件名。 示例1: $current_file_name = $_S…

    PHP 2023年5月26日
    00
  • php数组键名技巧小结

    PHP数组键名技巧小结 在PHP中,数组是一种非常常见的数据结构。数组中的每个元素都有一个键和一个值,键是数组中用来查找值的标识符。在使用PHP数组过程中,掌握一些数组键名的技巧,可以大大提高数组操作效率。 1. 数字键名 数字键名是最容易理解的数组键名类型,在PHP中定义数字键名的方式非常简单,只需要在键名前面添加一个数字即可。例如: $arr = arr…

    PHP 2023年5月26日
    00
  • 微信小程序 Windows2008 R2服务器配置TLS1.2方法

    微信小程序 Windows2008 R2服务器配置TLS1.2方法 说明 微信小程序从2021年6月1日起强制要求服务器只能使用TLS1.2及以上版本的加密协议进行通信,并禁用TLS1.0和TLS1.1。本文将详细讲解在Windows2008 R2服务器上如何配置TLS1.2的方法。 步骤 以下步骤将带你逐步完成TLS1.2的配置。 步骤1 – 确认服务器当…

    PHP 2023年5月23日
    00
  • 微信用户访问小程序的登录过程详解

    我们来详细讲解一下“微信用户访问小程序的登录过程详解”。 安装微信小程序 如果你还没有安装微信小程序,第一步需要安装一个微信小程序,在微信内部搜索需要使用的小程序,在小程序列表中找到需要的小程序即可进行安装。 进入微信小程序 安装好小程序后,在微信中点击进入该小程序,进入小程序的首页。 进入小程序需要授权登录 初次进入小程序时,用户需要授权登录,登录过程需要…

    PHP 2023年5月23日
    00
  • php读取EXCEL文件 php excelreader读取excel文件

    针对“php读取EXCEL文件 php excelreader读取excel文件”,我将为您提供一份完整攻略。 首先,解读题目。题目意味着我们需要用php去读取excel文件,并且需要使用php excelreader这个工具去读取excel文件。因此,在回答之前,我们需要知道什么是php excelreader以及它如何操作excel文件的。 php ex…

    PHP 2023年5月26日
    00
  • php获取当前url地址的方法小结

    当需要获取当前URL地址时,在PHP中有几种不同的方法可以实现。以下是各种方法的详细说明。 1. 使用\$_SERVER[“REQUEST_URI”] 可以使用以下的PHP代码来获取当前URL地址: $current_url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER[…

    PHP 2023年5月26日
    00
  • PHP的十个高级技巧(上中下)第2/3页

    “PHP的十个高级技巧”是一篇介绍PHP高级技巧的系列文章,我们在这里仅讨论第2/3页的内容。该页主要介绍了以下几个高级技巧: 构建自己的数组函数。 本文提供的示例代码中使用了PHP中的array_filter函数,但是该函数仅能实现对数组元素的简单过滤,无法满足复杂的需求。因此,作者建议PHP开发者自行编写数组函数,以实现更加灵活的数组操作。 以下为一个例…

    PHP 2023年5月23日
    00
  • php编写的简单页面跳转功能实现代码

    下面我来详细讲解如何用PHP编写简单的页面跳转功能实现代码。 讲解 我们可以使用PHP中的header()函数实现页面跳转。header()函数是PHP中用于发送HTTP头信息的函数,通过调用header()函数,就可以设置HTTP头信息,其中包括页面跳转。 因此,实现页面跳转的基本步骤如下: 使用header()函数发送HTTP头信息中的Location字…

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