首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php常用数据结构

# 常用数据结构 ——————————————————————————– ## 树(Tree) – 概念:树是n(n>=0)个节点有限集T,T为空时称为空树,否则他满足如下两个条件: – 有且仅有一个特定根...(root)节点 – 其余节点可以分为m(m>=0)个互不相交子集T1,T2,T3…Tm,其中每个子集本身又是一棵树,称之为子树(SubTree) – 特性:一棵非空树是由若干棵子树构成,而子树又可由若干棵更小子树构成...而这里子树可以是叶子也可以是分支 – 二叉树: 就是每个节点最多有两个子树树结构 – 满二叉树:除最后一层无子节点,每一层所有节点都有两个子节点 – 完全二叉树:只有最下面的两层子节点能小于...2,且最下面一层只能空缺右边节点 ## 链表 – 链表由一系列结点组成,每个结点包含两部分:一是储存数据元素数据域,二是储存下一个结点地址指针域 ## 数组 – 概念:元素按序排列集合 ## 堆/...栈 – 堆:树形数据结构 – 栈:先进后出特殊线性表 ## 队列 -概念:表尾插入并表头删除先进先出特殊线性表 ## 图 – 概念:图是由非空顶点集合和一个描述顶点之间关系——边(或弧)集合组成

21130

PHP数据结构-图存储结构

顺序存储结构:邻接矩阵 什么是邻接矩阵 首先还是来看看如何用顺序结构来存储图。不管是栈、队列、树,我们都可以使用一个简单数组就可以实现这些数据结构顺序存储能力。...PHP 文件,然后根据提示内容依次输入相关信息。...也就是最后一条数据会插入到 头结点 上,而最早那个边会在链表最后。大家看一下最后建立完成数据结构输出就明白了。...测试代码: https://github.com/zhangyue0503/Data-structure-and-algorithm/blob/master/5.图/source/5.2图存储结构.php...参考资料: 《数据结构》第二版,严蔚敏 《数据结构》第二版,陈越 《数据结构高分笔记》2020版,天勤考研

1.2K30
您找到你想要的搜索结果了吗?
是的
没有找到

数据结构-循环链表PHP实现

1.将单链表中终端结点指针端由空指针改为指向头结点,单循环链表,循环链表和单链表主要差异就在于循环判断条件上 原来是判断p->next是否为空,现在则是p->next不等于头结点,则循环未结束...2.指向终端结点尾指针代表该循环链表 3.创建循环链表关键是头结点指向自身,最后一个终端结点指向头结点 <?...php class Node{ public $data; public $next; } //创建一个链表 $linkList=new Node(); //头结点指向自身.../最后一个结点指向头结点 $node->next=$linkList; $temp->next=$node; $temp=$node; } //循环链表遍历..." "); } } //循环链表优势 function printLoopLink3($linkList){ //循环链表优势,从第三个结点开始遍历,遍历全部链表

74420

PHP数据结构-链表其它形式

关于循环链表操作我们不做详细说明,其实大部分代码和单向链表是一样,只是需要注意两个地方: 1.初始化、插入操作时候,注意最后一个节点指向,最后一个节点 next 要指向第一个节点 2.判断链表遍历是否完成条件为...} // } // } // } // } // } echo $link->next->next->next->next->data, PHP_EOL...; // 4 echo $link->next->next->next->next->prev->data, PHP_EOL; // 3 可以看出,与单向链表不同地方就在于多增加了对于 prev 属性操作...这里还是比较好理解。直接打印链表会显示很多 *RECURSION* 内容,这是 PHP 一种输出保护机制,这个标识说明当前这个属性变量是有递归类型。....php 参考资料: 《数据结构》第二版,严蔚敏 《数据结构》第二版,陈越 《数据结构高分笔记》2020版,天勤考研

43610

PHP常见几种数据结构

PHP常见几种数据结构 1 数组 数组(Array)是一种线性表数据结构,它用一段连续内存空间,来存储具有相同类型值。...但是由于在PHP底层定义中,数组是通过散列表实现,所以这段定义并不适用。PHP数组可以存储任意数据类型数据,所以相对于Java来说效率较高。...但是PHP却不受此约束。 2 链表 和数组不同,链表并不需要一块连续内存空间,它通过“指针”将一组零散内存块串联起来使用,一般节点有两个属性(data和next)。...栈支持通过数组/链表实现,通过数组实现通常叫做顺序栈,通过链表实现叫做链栈。 使用PHP中array_push()和array_pop()来实现。...使用PHP中array_shift()和array_push()来实现。

51520

PHP数据结构(四) ——队列

PHP数据结构(四)——队列以及简单消息存取 (原创内容,转载请注明来源,谢谢) 队列也是一种特殊线性表,和栈很相似,区别在于队列对于数据增加和删除限制和栈不同,队列是FIFO(先进先出),允许插入一头叫做队头...,允许删除一头叫做队尾。...下图为队列基本数据模型。 ? 存在特殊队列——双端队列,两头都允许增加和删除。另外也有单边只允许插入或者单边只允许删除特殊队列。...程序PHP源码如下: <?...——written by linhxx 2017.06.16 相关阅读: PHP数据结构(三)——运用栈实现括号匹配 PHP数据结构(二)——链式结构线性表 PHP数据结构(一)——顺序结构线性表

1.2K70

PHP数据结构-队列相关逻辑操

PHP数组更像是一个 Hash 结构,所以它是可以无限增长,并不需要我们在一开始定义一个具体数组长度。这也是 PHP 方便之处,不过如果我们不想浪费内存空间的话,应该怎么办呢?...就像在 C 语言中一样,我们在 PHP 中也为数组指定一个长度,并且使用非常经典“循环队列”来解决队列数组存储问题。就像下图所示: ?...根据队列长度取模来获取当前循环下标,是不是非常地巧妙。不得不感慨先人智慧呀!当然,这也是基本数学原理哦,所以,学习数据结构还是要复习一下数学相关知识哦! 链式队列 顺序队列有没有看懵?...PHP 为我们提供数组队列操作 最后,就和栈一样,PHP 代码中也为我们提供了一个可以用于队列操作函数。....php 参考资料: 《数据结构》第二版,严蔚敏 《数据结构》第二版,陈越 《数据结构高分笔记》2020版,天勤考研

37920

PHPSPL扩展库(一)数据结构

PHPSPL扩展库(一)数据结构 SPL 库也叫做 PHP 标准库,主要就是用于解决典型问题一组接口或类集合。这些典型问题包括什么呢?...话说回来,在 PHP 中,由于语言特点,其实很多数据结构都和我们用 C 语言实现略有不同,比如说链表,由于没有结构概念,所以我们一般会使用类来代表链表结点。...总结 其实这一圈学习下来,突然发现有了 SPL 这几个数据结构之后,我们在 PHP 下面还真不太需要关心什么数据结构方面的实现了,直接通用点就上个双向链表就完了,简单就只是写算法了。...好吧,学习还是要扎实点,数据结构和算法真正要学习其实是它内部思想和逻辑。当然,既然已经提供了,那么我们平常业务开发中还是更建议直接使用 SPL 这些数据结构来处理!...测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/2021/01/source/3.PHPSPL扩展库(一)数据结构.php

1K40

PHP数据结构-栈相关逻辑操作

堆是一种树结构,或者说是完全二叉树结构。而今天,我们主要讲就是这个栈应用。 什么是栈? 栈一般就是一种顺序数据结构。...不过如果是 C 语言的话,因为它有数组长度限制,所以在入栈时候,我们也需要判断一下栈是否已经满了。当然,在 PHP 中我们就没有这个顾虑啦。 顺序栈入栈图示 ?...看完学习完链栈之后,我们还会讲到 PHP 已经为我们准备好数组栈操作函数哦,使用起来会更加方便。...PHP 为我们提供数组栈操作 最后,我们简单看一下在 PHP 中已经为我们准备好两个数组操作函数。有了它们,对于顺序栈来说,我们操作可以简化到非常傻瓜智能效果。....php 参考资料: 《数据结构》第二版,严蔚敏 《数据结构》第二版,陈越 《数据结构高分笔记》2020版,天勤考研

35820

PHP数据结构-链表相关逻辑操作

链表相关逻辑操作 链表操作相对顺序表(数组)来说就复杂了许多。因为 PHP 确实已经为我们解决了很多数组操作上问题,所以我们可以很方便操作数组,也就不用为数组定义很多逻辑操作。...比如在 C 中,数组是有长度限制,而在 PHP 中我们就不会考虑这个问题。...如果是使用 C 的话,这个长度限制就是数组结构一大劣势,而链表,不管是在 C 还是在 PHP 中,都不会受到长度问题限制。能够限制链表只有内存大小。...= null) { echo $link->data, ','; } echo PHP_EOL; } 链表遍历是不是非常像某些数据库游标操作,或者像迭代器模式操作一样....php 参考资料: 《数据结构》第二版,严蔚敏 《数据结构》第二版,陈越 《数据结构高分笔记》2020版,天勤考研

38220

PHP数据结构(十六) ——B树

数据结构(十五) ——哈希表​ PHP数据结构(十四) ——键树(双链树) PHP数据结构(十三) ——动态查找表(二叉排序树) PHP数据结构(十二) ——静态查找表​ PHP数据结构(十一) ——图连通性问题与最小生成树算法...(2) PHP数据结构(十一) ——图连通性问题与最小生成树算法(1) PHP数据结构(十) ——有向无环图与拓扑算法 PHP数据结构(九) ——图定义、存储与两种方式遍历 PHP数据结构(八) —...—赫夫曼树实现字符串编解码(实践2) PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践1) PHP数据结构(八) ——赫夫曼树实现字符串编解码(理论) PHP数据结构(七) ——串与实现KMP算法...PHP数据结构(六) ——树与二叉树之概念及存储结构 PHP数据结构(六) ——数组相乘、广义表 PHP数据结构(五) ——数组压缩与转置 PHP数据结构(四) ——队列 PHP数据结构(三)——...运用栈实现括号匹配 PHP数据结构(二)——链式结构线性表 PHP数据结构(一)——顺序结构线性表

1.4K110

PHP数据结构-散列表查找

上篇文章查找是不是有意犹未尽感觉呢?因为我们是真真正正地接触到了时间复杂度优化。从线性查找 O(n) 直接优化到了折半查找 O(logN) ,绝对是一个质飞跃。...它们核心思想都是作为一个散列哈希算法,让原始数据对应到一个新值(位置)上。 类似的思想其实最典型就是 md5() 散列运算,不同内容都会产生不同值。...hashKey] = $arr[$i]; }else{ $c = 0; echo '冲突位置:', $arr[$i]%$hashKey, ',值:',$arr[$i], PHP_EOL...测试代码: https://github.com/zhangyue0503/Data-structure-and-algorithm/blob/master/6.查找/source/6.2散列表查找.php...参考文档: 《数据结构》第二版,严蔚敏 《数据结构》第二版,陈越

51120

PHP数据结构(十五) ——哈希表​

PHP数据结构(十五)——哈希表 (原创内容,转载请注明来源,谢谢) 一、概述 查找效率与查找次数有关,查找次数越少速度越快。...PHP数据结构(十一) ——图连通性问题与最小生成树算法(2) PHP数据结构(十一) ——图连通性问题与最小生成树算法(1) PHP数据结构(十) ——有向无环图与拓扑算法 PHP数据结构(九)...——图定义、存储与两种方式遍历 PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践2) PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践1) PHP数据结构(八) ——赫夫曼树实现字符串编解码...(理论) PHP数据结构(七) ——串与实现KMP算法 PHP数据结构(六) ——树与二叉树之概念及存储结构 PHP数据结构(六) ——数组相乘、广义表 PHP数据结构(五) ——数组压缩与转置 PHP...数据结构(四) ——队列 PHP数据结构(三)——运用栈实现括号匹配 PHP数据结构(二)——链式结构线性表 PHP数据结构(一)——顺序结构线性表

1.5K90

PHP数据结构-图概念和存储结构

概念和存储结构 随着学习深入,我们知识也在不断扩展丰富。树结构有没有让大家蒙圈呢?相信我,学完图以后你就会觉得二叉树简直是简单得没法说了。其实我们说所树,也是图一种特殊形式。...在上面所画图中,图b 是的箭头,而 图a 连接线是没有箭头,像这样有明确方向指向图就叫做 有向图 。而没有箭头,也就是没有方向指向图就叫作 无向图 。...上图中右边那些子图都是属于原图子图,可以看出子图可以产生非常多形态,有向图 也是相同概念,不过相对于 无向图 来说,有向图能够生成子图更少一些,因为它边是有方向。...带权图就可以称为网 最上方图片上 图a-2 和 图b-1 边上数字代表就是权重。这两张图就可以称为网图。...参考资料: 《数据结构》第二版,严蔚敏 《数据结构》第二版,陈越 《数据结构高分笔记》2020版,天勤考研

85430

PHP数据结构(六) ——数组相乘、广义表

PHP数据结构(六)——数组相乘、广义表 (原创内容,转载请注明来源,谢谢) 本文接PHP数据结构(五)内容。...array(3,1,15) ); N=array( 0=>array(0,3,10), 1=>array(1,4,15),2=>array(2,3,20), 3=>array(3,3,30) ); PHP...PHP计算广义表源码如下: //计算广义表深度 function getDeepthArr($arr){ $curMaxDeep= 0; foreach($arras...()), '')), 'a'); $deep = getDeepthArr($arr); echo $deep;//结果为5 ——written by linhxx 2017.06.23 相关阅读: PHP...数据结构(五) ——数组压缩与转置 PHP数据结构(四) ——队列 PHP数据结构(三)——运用栈实现括号匹配 PHP数据结构(二)——链式结构线性表 PHP数据结构(一)——顺序结构线性表

2.1K90

PHP数据结构-图应用:最短路径

面试时候如果你写不出,至少得说出个大概来吧,当然,如果你是要考研学生,那就要深入理解并且记住整个算法代码了。...什么是最短路径 今天我们学习是图应用中另外一个经典问题,也就是 最短路径 问题。这个问题和最小生成树是不同,最小生成树要求是要连通所有的结点,并且走得是权值最小那条路线。...){ for($j = 1;$j<=$n;$j++){ echo $graphArr[$i][$j], ' '; } echo PHP_EOL...,继续下一个最近结点 } for ($i = 1; $i <= $n; $i++) { echo $dis[$i], PHP_EOL; } } // 请输入结点数....php 参考文档: 《数据结构》第二版,严蔚敏 《数据结构》第二版,陈越 《数据结构高分笔记》2020版,天勤考研 《啊哈!

56120

PHP数据结构-在学数据结构和算法时候我们究竟学是啥?

PHP数据结构-在学数据结构和算法时候我们究竟学是啥? 一说到数据结构与算法,大家都会避之不及。这本来是一门专业基础课,但是大部分人都并没有学好,更不用说我这种半路出家码农了。...不过,还好一切都不晚,在这里,我们就用 PHP 作为示例代码,来和大家一起真正从头学一遍恐怖数据结构与算法。 数据结构 什么是数据结构呢?...数据结构是带“结构”数据元素集合,“结构”就是指数据元素之间存在关系 这是严蔚敏老师在《数据结构》第二版中对数据结构定义。其实,就是关于数据一种组合形式。...通常,顺序存储结构我们使用数组来表示,而链式存储结构在 C语言 中使用结构体指针来表示,但在 PHP 中,链式结构我们将使用类来表述。...$i, $j, PHP_EOL; } } // O(N^2) 从上面代码中可以看出,循环嵌套次数与 n 增长有很大关系,另外就是看在循环内部操作也会影响到增长情况。

32620

PHP 源码学习 | 变量类型数据结构

前段时间因为项目需要,研究了一下在 Windows 系统下进行 PHP 扩展开发,对于 PHP 扩展开发并不是一件容易事情(话又说回来了,会者不难,难者不会,关键是自己不会)。...开发 PHP 扩展比较难,我个人认为有两方面的原因,一方面需要了解操作系统相关开发,毕竟 PHP 扩展不是 .so 文件就是 .dll 文件,另一方面需要了解 PHP 本身底层数据结构。...在有参考书情况下,学习速度也不快,除了本身能力外,另一方面是数据结构比较多,而且数据之间关系也比较多,不能很快数据结构进行记忆,也不能很好理清数据结构之间关系,这是我比较大障碍。...在参考书中介绍完源码目录结构后,开始介绍 PHP 变量数据结构。...上面的图,就是关于 PHP 变量底层数据结构图,图中数据结构中字段并不完整,因为我是在逐步去完善,在每学习完一部分后就去完善一部分数据结构,当数据结构完善了,图也就完善了。

40930
领券