php实现单链表的实例代码

yizhihongxing

下面是详细的“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 中,函数是基本的代码组织单元,允许您将代码块划分为逻辑段。通过给函数名称指定参数列表,可以将数据传递到函数内部。函数可以返回值来提供一个结果。 函数的声明方式 function functionName($parameter1, $parameter2, …) {…

    PHP 2023年5月27日
    00
  • PHP设计模式(一)工厂模式Factory实例详解【创建型】

    PHP设计模式(一)工厂模式Factory实例详解【创建型】 什么是工厂模式? 在面向对象程序设计中,工厂模式是一种创建模式,它使用工厂方法来处理创建对象的问题,而无需指定将要创建的具体对象。 工厂模式的目的是什么? 工厂模式的目的是将对象的创建和使用分离。使用工厂模式可以避免我们在客户端代码中使用new运算符直接创建具体对象,而是将具体对象的创建过程放在工…

    PHP 2023年5月27日
    00
  • 微信小程序网络请求wx.request详解及实例

    微信小程序网络请求wx.request详解及实例 在微信小程序中,我们经常需要与服务器进行交互获取数据。而微信提供了wx.request方法用于实现网络请求。本文将详细介绍wx.request的使用方法及实例说明。 wx.request方法详解 语法 wx.request(Object object) 参数说明 Object object: 请求的相关参数,…

    PHP 2023年5月23日
    00
  • 详解PHP对数组的定义以及数组的创建方法

    当涉及到数据的存储和处理时,数组是PHP中最常用的数据类型之一。在本文中,我们将详细讲解PHP对数组的定义以及数组的创建方法。 定义数组 在PHP中,数组是一个有序的集合,它可以包含一个或多个值。每个值称为数组元素。每一个数组元素都有一个唯一的键(或索引),用于访问该元素。 以下是一个简单的示例,演示如何在PHP中定义数组: $fruits = array(…

    PHP 2023年5月26日
    00
  • PHP中文URL编解码(urlencode()rawurlencode()

    对中文URL进行编解码是Web开发中的一个常见需求。在PHP中,提供了两个函数来完成这个任务:urlencode和rawurlencode。下面详细讲解这两个函数的用法和区别。 urlencode urlencode函数是PHP内置函数,用于将URL中的非字母数字字符以及一些保留字符进行编码,以便于在URL传递时能够正确地传递参数。 语法:string ur…

    PHP 2023年5月23日
    00
  • PHP中合并数组的常见方法分享

    以下是“PHP中合并数组的常见方法分享”的完整使用攻略,包括数组合并的基本概念、常见方法和示例说明等内容。 数组合并的基本概念 数组合并是指将两或多个数组合并成一个数组的操作。在PHP中,数组合并有多种方法,可以根据实际需求选择不同的方法。 常见方法 以下是数组合并的常见方法: 1. 使用array_merge函数 array_merge函数可以将多个数组合…

    PHP 2023年5月12日
    00
  • php array_map()函数实例用法

    PHP array_map()函数实例用法 array_map()函数是PHP中一个非常有用的函数,它将一组数组作为输入,并返回一个新的数组。array_map()函数的参数如下: array_map(callable $callback, array …$arrays) 其中,$callback是一个可调用的函数。它可以是一个字符串表示的函数名,也可以…

    PHP 2023年5月26日
    00
  • php 中的4种标记风格介绍

    PHP 语言中,有 4 种标记风格可以使用。这篇攻略将详细介绍这 4 种标记风格,并举例说明各自的使用场景。 1. <?php ?> 标记 这是 PHP 的标准标记,也是最常用的标记方式。它的语法如下: <?php // PHP 代码 ?> 其中,<?php 是 PHP 代码的起始标记,?> 是 PHP 代码的结束标记。在…

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