php链表构造,用PHP实现单向链表结构
链表的结构是由一个一个节点组成的,所谓链,就是每个节点的头尾连在一起。而单向链表就是:每个节点包含了当前节点的值和下一个节点引用。双向链表就是每个节点包含了当前节点的值和上下两个节点的引用。相对于数组结构,链表的增删效率会更加高。
单向链表(示意图):
PHP代码实现
/**
* 链表结构
*/
class Hero{
public $no;
public $name;
public $next=null;
public function __construct($no=null,$name=null){
$this->no = $no;
$this->name = $name;
}
}
/**
* 链表操作
*/
class SingleLink{
/**
* 添加节点
*/
public function addNode($head,$node)
{
$insertNode = $head;
$afterNode = null;// 插入节点的后续节点
while ($insertNode->next!=null){
if ($node->no < $insertNode->next->no){
$afterNode = $insertNode->next;
break;
}elseif($node->no == $insertNode->next->no){
throw new \Exception('排名 '.$node->no.' 节点已存在!');
}
$insertNode = $insertNode->next;
}
if( $afterNode ){// 将后续节点拼接到当前插入节点的后面
$node->next = $afterNode;
}
$insertNode->next = $node;
}
/**
* 删除节点
*/
public function delNode($head,$no)
{
$currentNode = $head;
$prevNode = $head;
while ($currentNode->next!=null){
$currentNode = $currentNode->next;
if( $currentNode->no==$no ){
$prevNode->next = $currentNode->next;
break;
}
$prevNode = $currentNode;
}
}
/**
* 显示节点
*/
public function showNode($head)
{
$currentNode = $head;
while ($currentNode->next!=null){
$currentNode = $currentNode->next;
echo '第 '.$currentNode->no.' 名:'.$currentNode->name."
";
}
}
}
//创建一个head头,该head 只是一个头,不放入数据
$head = new Hero();
$heroList = new SingleLink();
$hero_01 = new Hero(1,'宋江');
$hero_02 = new Hero(2,'卢俊义');
$hero_03 = new Hero(3,'公孙胜');
$hero_04 = new Hero(4,'吴用');
$hero_05 = new Hero(5,'关胜');
$hero_06 = new Hero(6,'林冲');
$heroList->addNode($head, $hero_01);
$heroList->addNode($head, $hero_03);
$heroList->addNode($head, $hero_02);
$heroList->addNode($head, $hero_05);
$heroList->addNode($head, $hero_04);
$heroList->addNode($head, $hero_06);
//$heroList->addNode($head, $hero_02);
$heroList->showNode($head);
echo "
";
$heroList->delNode($head,3);
$heroList->delNode($head,5);
$heroList->showNode($head);
参考:
韩顺平PHP程序员玩转算法公开课
https://www.cnblogs.com/Starshot/p/6918569.html
https://blog.csdn.net/silent123go/article/details/52693735
php链表构造,用PHP实现单向链表结构相关推荐
- java数组转换成单链表_【转】单向链表(单链表)的Java实现
最近被问到链表,是一个朋友和我讨论Java的时候说的.说实话,我学习编程的近一年时间里,学到的东西还是挺少的.语言是学了Java和C#,关 于Web的学了一点Html+css+javascript.因 ...
- 链表问题5——反转部分单向链表
题目 给定一个单向链表的头节点head,以及两个整数from和to,在单向链表上把第from个节点到第to个节点这一部分进行反转. 输入 调整结果为 1->2->3->4->5 ...
- 单链表的创建示意图, 显示单向链表的分析
SingleLinkedListDemo.java package com.dym.linkedlist;import java.util.Stack;public class SingleLinke ...
- php mysql 链表_php实现数据结构的单向链表
啥是单向链表 链表是以链式存储数据的结构,其不需要连续的存储空间,链表中的数据以节点来表示,每个节点由元素(存储数据)和指针(指向后继节点)组成. 单向链表(也叫单链表)是链表中最简单的一种形式,每个 ...
- (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
http://blog.csdn.net/fisherwan/article/details/25557545 前段时间用C语言实现了链表的相关操作,但是发现当时挺清楚的,过了一段时间又忘的差不多了, ...
- 数据结构与算法java - 03 链表,单向链表,逆序打印单向链表
链表 Linked List 有序 链表是以节点的方式来存储,链式存储 每个节点包含 data 域, next 域:指向下一个节点 链表的各个节点不一定是连续存放 链表分带头节点的链表和没有头节点的链 ...
- 结构与算法(03):单向链表和双向链表
本文源码:GitHub·点这里 || GitEE·点这里 一.链表简介 1.链表概念 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列 ...
- java 快速从树节点找到数据_数据结构与算法:单向链表和双向链表
一.链表简介 1.链表概念 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列节点组成,节点可以在运行时动态生成,节点包括两个部分:一个 ...
- 长风破浪会有时:单向链表、双向链表和循环链表图文解析
链表的种类有很多.我们常常会用到的链表有:单向链表.双向链表和循环链表. 链表不同于数组的地方在于:它的物理存储结构是非连续的,也就是说链表在内存中不是连续的,并且无序.它是通过数据节点的互相指向实现 ...
最新文章
- java8 collect 类型转换_java8新特性之list转换
- 2021.01.29 Visual QA论文阅读
- python中xlwt的局限,Python xlwt 生成Excel和设置特定单元格不可编辑
- 使用Gitolite搭建Gitserver
- 使用mysqldump 导出sql数据
- 自治区计算机一级,新疆自治区计算机一级考试题库及答案
- C++程序设计:原理与实践(进阶篇)15.4 链表
- MFC通过窗口名字(caption的内容)查找窗口,并将其隐藏或者置顶显示
- python求职者的建议_Python 求职和建议-从认识自己出发
- TCP / IP攻击:ARP缓存中毒的基本原理、TCP序列号预测和TCP重置攻击
- RocketMQ如何应对每天1500亿条的数据处理
- 工业AI落地场景案例实战,飞桨EasyDL让工业更智能
- LuoguP4568 分层图
- 加载mysql的jdbc驱动_JDBC驱动加载
- 番茄社区门店系统新增跑腿和空码功能
- adb shell 获取手机分辨率
- HTV-VIVE 连接 PC端 720云
- 云服务器系统esxi,云服务器安装esxi
- LCD液晶屏连接方式有哪些呢及各自优缺点是什么?
- 戴尔微型计算机进bois,dell进bios按什么键 戴尔进bios的方法