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

php常用数据结构

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

22330

PHP数据结构-图的存储结构

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

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

    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版,天勤考研

    44810

    数据结构-循环链表的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){ //循环链表的优势,从第三个结点开始遍历,遍历全部链表

    75520

    PHP常见的几种数据结构

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

    55920

    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版,天勤考研

    39520

    PHP的SPL扩展库(一)数据结构

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

    1K40

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

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

    38720

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

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

    36720

    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.5K110

    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...参考文档: 《数据结构》第二版,严蔚敏 《数据结构》第二版,陈越

    52520

    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数据结构(六) ——数组的相乘、广义表

    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数据结构-图的概念和存储结构

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

    87330

    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版,天勤考研 《啊哈!

    57620

    PHP数据结构(十二) ——静态查找表​

    PHP数据结构(十二)——静态查找表 (原创内容,转载请注明来源,谢谢) 一、概念 1、查找表:由同一类型数据元素构成的集合。...——written by linhxx 2017.07.14 相关阅读: PHP数据结构(十一) ——图的连通性问题与最小生成树算法(2) PHP数据结构(十一) ——图的连通性问题与最小生成树算法(...1) PHP数据结构(十) ——有向无环图与拓扑算法 PHP数据结构(九) ——图的定义、存储与两种方式遍历 PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践2) PHP数据结构(八) ——赫夫曼树实现字符串编解码...(实践1) PHP数据结构(八) ——赫夫曼树实现字符串编解码(理论) PHP数据结构(七) ——串与实现KMP算法 PHP数据结构(六) ——树与二叉树之概念及存储结构 PHP数据结构(六) ——数组的相乘...、广义表 PHP数据结构(五) ——数组的压缩与转置 PHP数据结构(四) ——队列 PHP数据结构(三)——运用栈实现括号匹配 PHP数据结构(二)——链式结构线性表 PHP数据结构(一)——顺序结构线性表

    1.1K70

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

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

    41830
    领券