iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php如何实现单链表
  • 499
分享到

php如何实现单链表

2023-06-06 12:06:24 499人浏览 泡泡鱼
摘要

本文将为大家详细介绍“PHP如何实现单链表”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php如何实现单链表”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。php实现

本文将为大家详细介绍“PHP如何实现单链表”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php如何实现单链表”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。

php实现单链表的方法:首先写出链表节点的类;然后在链表中还定义两个方法,分别是插入和删除;接着获取链表长度并添加节点数据;最后获取节点名字并进行删除或更新操作即可。

用PHP实现的单链表

单链表顾名思义就是一个链式数据结构,它有一个表头,并且除了最后一个节点外,所有节点都有其后继节点。如下图。

首先,我们写出链表节点的类。单链表中的每一个节点,都保存其数据域和后驱指针

//链表节点 class node {     public $id; //节点id     public $name; //节点名称     public $next; //下一节点        public function __construct($id, $name) {         $this->id = $id;         $this->name = $name;         $this->next = null;     } }

链表中还有两个特别重要的方法,插入和删除。插入需要找到插入的位置,把前一个元素的next指针指向被插入的节点,并将被插入节点的next指针指向后一个节点,如下图左侧所示。而删除则是把前一个节点的next指针指向后一个节点,并返回被删除元素的数据内容,如下图右侧所示。

//单链表 class singelLinkList {     private $header; //链表头节点        //构造方法     public function __construct($id = null, $name = null) {         $this->header = new node ( $id, $name, null );     }      //获取链表长度     public function getLinkLength() {         $i = 0;         $current = $this->header;         while ( $current->next != null ) {             $i ++;             $current = $current->next;         }         return $i;     }      //添加节点数据     public function addLink($node) {         $current = $this->header;         while ( $current->next != null ) {             if ($current->next->id > $node->id) {                 break;             }             $current = $current->next;         }         $node->next = $current->next;         $current->next = $node;     }      //删除链表节点     public function delLink($id) {         $current = $this->header;         $flag = false;         while ( $current->next != null ) {             if ($current->next->id == $id) {                 $flag = true;                 break;             }             $current = $current->next;         }         if ($flag) {             $current->next = $current->next->next;         } else {             echo "未找到id=" . $id . "的节点!<br>";         }     }     //判断连表是否为空    public function isEmpty(){            return $this->header == null;    }     //清空链表    public function clear(){            $this->header = null;    }      //获取链表     public function getLinkList() {         $current = $this->header;         if ($current->next == null) {             echo ("链表为空!");             return;         }         while ( $current->next != null ) {             echo 'id:' . $current->next->id . '   name:' . $current->next->name . "<br>";             if ($current->next->next == null) {                 break;             }             $current = $current->next;         }     }      //获取节点名字     public function getLinkNameById($id) {         $current = $this->header;         if ($current->next == null) {             echo "链表为空!";             return;         }         while ( $current->next != null ) {             if ($current->id == $id) {                 break;             }             $current = $current->next;         }         return $current->name;     }      //更新节点名称     public function updateLink($id, $name) {         $current = $this->header;         if ($current->next == null) {             echo "链表为空!";             return;         }         while ( $current->next != null ) {             if ($current->id == $id) {                 break;             }             $current = $current->next;         }         return $current->name = $name;     } }$lists = new singelLinkList (); $lists->addLink ( new node ( 5, 'eeeeee' ) ); $lists->addLink ( new node ( 1, 'aaaaaa' ) ); $lists->addLink ( new node ( 6, 'ffffff' ) ); $lists->addLink ( new node ( 4, 'DDDddd' ) ); $lists->addLink ( new node ( 3, 'cccccc' ) ); $lists->addLink ( new node ( 2, 'bbbbbb' ) ); $lists->getLinkList (); echo "<br>-----------删除节点--------------<br>"; $lists->delLink ( 5 ); $lists->getLinkList ();echo "<br>-----------更新节点名称--------------<br>"; $lists->updateLink ( 3, "222222" ); $lists->getLinkList ();echo "<br>-----------获取节点名称--------------<br>"; echo $lists->getLinkNameById ( 5 );echo "<br>-----------获取链表长度--------------<br>"; echo $lists->getLinkLength ();

如果你能读到这里,小编希望你对“php如何实现单链表”这一关键问题有了从实践层面最深刻的体会,具体使用情况还需要大家自己动手实践使用过才能领会,如果想阅读更多相关内容的文章,欢迎关注编程网PHP编程频道!

--结束END--

本文标题: php如何实现单链表

本文链接: https://www.lsjlt.com/news/246841.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php如何实现单链表
    本文将为大家详细介绍“php如何实现单链表”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php如何实现单链表”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。php实现...
    99+
    2023-06-06
  • Golang如何实现单链表
    今天小编给大家分享一下Golang如何实现单链表的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 定义节点// ...
    99+
    2023-07-05
  • C++如何实现单链表
    小编给大家分享一下C++如何实现单链表,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!单链表的实现(从入门到熟练)概念和结构概念:链表是一种物理存储结构上非连续、非...
    99+
    2023-06-29
  • python如何实现单向链表及单向链表的反转
    链表的定义 链表中的每个节点会存储相邻节点的位置信息,单链表中的每个节点只存储下一关节点的位置信息 单向链表的实现 class ListNode: def __init_...
    99+
    2024-04-02
  • C++详解如何实现单链表
    目录单链表单链表的基本操作1.初始化2.取值3.查找4.插入5.删除示例代码开发环境运行结果单链表 链表内存空间不一定连续,其扩展性较好。多余的不多说了。该文主要记录单链表的实现,该...
    99+
    2024-04-02
  • C++和python如何实现单链表
    这篇文章给大家分享的是有关C++和python如何实现单链表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、链表的基本概念链表是数据元素的线性集合(Linear Collection),物理存储不连续。那么,这...
    99+
    2023-06-29
  • python 实现线性链表(单链表)
    初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码。 #!/usr/bin/python # -*- coding:utf-8 -*- # Author: Hui # Date: 2017-10-13...
    99+
    2023-01-31
    链表 线性 python
  • python实现单链表
    #encoding:utf-8 import sys class Lnode():     def __init__(self,elem,next=None):         self.elem = elem    #节点的值   ...
    99+
    2023-01-31
    链表 python
  • 如何使用rust实现简单的单链表
    目录前言1.链表节点的定义2.链表的定义3.实现从链表头部插入节点的prepend方法4.为链表实现Display trait定制链表的打印显示5.为链表实现翻转链表功能的rever...
    99+
    2024-04-02
  • C语言中单链表如何实现
    这篇文章主要介绍“C语言中单链表如何实现”,在日常操作中,相信很多人在C语言中单链表如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言中单链表如何实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-04
  • python单向循环链表如何实现
    本篇内容主要讲解“python单向循环链表如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python单向循环链表如何实现”吧!单向循环链表将所有的链接在一起,每一个节点分为数据存储区和链...
    99+
    2023-07-06
  • C语言如何实现单链表操作
    本篇内容介绍了“C语言如何实现单链表操作”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 链表的概念及结构概念:链表是一种物理存储结构上非连...
    99+
    2023-06-29
  • Python实现单向链表
    单向链表每个节点都是由两部分组成:数据字段和指针,指针指向下一个元素在内存中的位置。 单向链表的第一个节点节点是链表头指针,而最后一个节点的指针设为None,不指向任何元素。(链表头...
    99+
    2024-04-02
  • python单链表的实现
    ''' 当加入第一个node节点的时候,会有几个值,(这里的self.tail.next 其实就是node.next) head = item = tail = Node(object element1 memory) item = hea...
    99+
    2023-01-31
    链表 python
  • PHP中如何实现并处理链表
    这篇“PHP中如何实现并处理链表”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“PHP中如何实现并处理链表”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起...
    99+
    2023-06-06
  • C++数据结构之单链表如何实现
    这篇文章主要介绍了C++数据结构之单链表如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++数据结构之单链表如何实现文章都会有所收获,下面我们一起来看看吧。一、单链表的定义线性表的链式存储又称为单链表,...
    99+
    2023-06-30
  • Java如何实现单链表的增删改查
    一、新建学生节点类 Stu_Node节点包含: 学号:int num; 姓名:String name; 性别:String gender; 下一个节点:Stu_Node next;...
    99+
    2024-04-02
  • golang如何实现链表
    实现链表的方法:1、定义了一个Node结构体来表示链表的节点,每个节点包含一个数据项和一个指向下一个节点的指钁;2、定义了一个LinkedList结构体来表示链表本身,其中包含一个指向链表头节点的指针;3、实现了两个方法,append用于在...
    99+
    2023-12-14
    Golang 链表
  • C++怎么实现单链表
    本文小编为大家详细介绍“C++怎么实现单链表”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++怎么实现单链表”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。单链表链表内存空间不一定连续,其扩展性较好。多余的不多...
    99+
    2023-07-02
  • PHP中怎么利用数组实现单链表
    本篇文章为大家展示了PHP中怎么利用数组实现单链表,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。PHP数组实现单链表结构此类主要是依靠PHP强大的数组系统来模拟出单链表类型的数据结构。 本人完全凭借...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作