链式存储结构 php,【PHP 实现数据结构】链式队列

什么是链式队列

队列是一种“先进先出”的存储结构,是一种特殊的线性表,于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。

通常队列可以分为顺序队列和链式队列两种实现,

顺序队列顾名思义就是采用顺序存储,如以数组方式来实现,

链式队列采用链式存储,如以上篇说到的单向链表来实现,

链式队列是以链式数据结构实现的队列

队列有两个基本的操作,入队列和出队列

代码实现

链式队列实现方式多种多样,可以以单链表,双向链表,循环链表等各种方式来实现,这里以上篇提到的单链表的方式来实现。

require 'SingleLinkList.php';

/**

* Class Queue

* 队列是一种“先进先出”的存储结构,它只允许在队头进行删除操作,而在队尾进行插入操作

* 通常队列可以分为顺序队列和链式队列两种实现

* 顺序队列顾名思义就是采用顺序存储,如以数组方式来实现

* 链式队列采用链式存储,如以上篇说到的单向链表来实现

*

* 队列有两个基本的操作,入队列和出队列

*/

class QueueImplementedBySingleLinkList extends SingleLinkList

{

/**

* Queue constructor.

* 构造函数,初始化队列

*/

public function __construct()

{

parent::__construct();

}

/**

* 入队

* @param $data

*/

public function enQueue($data)

{

$node = new Node($data);

parent::addNode($node);

}

/**

* 出队

* @return mixed

* @throws Exception

*/

public function deQueue()

{

if ($this->isEmpty()) {

throw new Exception('队列为空');

}

$node = parent::searchNodeByIndex(1);

parent::deleteNodeByIndex(1);

return $node->data;

}

/**

* 队列是否为空

* @return bool

*/

public function isEmpty()

{

return $this->header->next == null;

}

}

示例

$queue = new QueueImplementedBySingleLinkList();

$queue->enQueue('1');

$queue->enQueue('2');

$queue->enQueue('3');

$queue->enQueue('4');

var_dump($queue);

echo '-----------', PHP_EOL;

$queue->deQueue();

$queue->deQueue();

var_dump($queue);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

base64_encode() 和 base64_decode() 8bit图片通过网络传输

一、为什么要使用base64编码? Base64是一种基于64个可打印字符来表示二进制数据的表示方法。 有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送。这样用途就受到了很大的限制…

图标圆角角度_UI设计中图标的规范及原则【附全套视频】

icon是一种图标格式,用于系统图标、软件图标等,这种图标扩展名为*.icon、*.ico。常见的软件或windows桌面上的那些图标一般都是ICON格式的。icon元素包括两个可选的子元素:small-icon子元素和large-icon子元素。文件名是Web应用归档文件(WAR)的根的相对路…

设计模式(十一):从文Finder中认识组合模式(Composite Pattern)

上一篇博客中我们从从电影院中认识了"迭代器模式"(Iterator Pattern),今天我们就从文件系统中来认识一下“组合模式”(Composite Pattern)。说到组合模式,在此我想聊一下在类图中有组合与聚合的关系,这两者都…

PHP7不能用string类名,解决thinkphp php7 Cannot use ‘String’ as class name as it is reserved...

我有一网站之前用php7运行thinkphp没有什么问题,但是最近发现开启验证码的时候发现有错误Cannot use String as class name as it is reserved在google baidu搜索了一下还是没有解决方法于是自己动手解决,看来我是第一个分享出来的人原因:有一…

python序列化对象的函数_使 Python 对象可序列化的函数

from copy import deepcopyfrom str import basestringdef enserializable(model):"""本函数用于将对象可序列化,且返回的字典都是新的(deepcopy)"""if isinstance(model, dict):model deepcopy(model)to_pop []for k in model:# 过…

Activity(二)

多个Activity之间的调用 建立一个Activity 配置layout文件夹下fragment_main.xml文件 在layout下新建other.xml文件 xml文件创建的id需要编译才能生成 在同一工程src文件夹下新建class文件 查找id并作关联 加入监听器,调用另一个Activity的类 调用监听器 注&#xf…

php用asp文件js,asp下用fso生成js文件的代码

asp下用fso生成js文件的代码更新时间:2008年06月24日 23:47:54 作者:asp下使用fso生成js代码的方法Set fso Server.CreateObject("Scripting.FileSystemObject")set fdfso.createtextfile(server.MapPath("../category.js"),true)…

relativelayout中按键不能点_CNC | M80/M800系列系统常见按键和外部存储器故障

一、按键无效现象1.操作人员对机床操作时画面无反应现象M80/M800系列系统在使用键盘或触摸屏输入时,请勿连击键盘按键,输入一 次即可。键盘每向NC输入一次,NC系统需要计算一次,连续的多次重复输入,NC多次重复计算、显示…

Problem J

Total Submission(s) : 102 Accepted Submission(s) : 60 Problem Description有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?Input输入数据首先包含一个整数N&#xff0c…

百度AI人脸检测测颜值php,百度AI人脸识别测颜值源码app

百度AI人脸识别测颜值源码app是由百度AI官方提供的,将人脸识别分为了两个接口,v2与vv3。需要根据文档权限来选择接口类型,这款软件非常方便用户学习和体验。想要学习相关信息的朋友可以来看看哦。百度AI人脸识别测颜值介绍百度AI人脸识别测颜…

python3 换源_CentOS 7.5 下 python3 安装及 pip 换源

从EPEL仓库安装Python3CentOS 7.5 默认python2的环境,可使用yum直接安装python3,之后切换/bin中的python向python3,查看版本yum install python3 -yls -l /bin/pythonpython -Vrm /bin/pythonln -s /bin/python3 /bin/pythonpython -V此时pip仍为py2,可以使用pip3或python -m p…

php使用redis存储

一、Redis扩展模块 # wget https://codeload.github.com/phpredis/phpredis/zip/develop -O phpredis.zip # unzip phpredis.zip # cd phpredis-develop/ # /usr/local/php/bin/phpize # ./configure --with-php-config/usr/local/php/bin/php-config # make # make install 二…

vs2015如何连接oracle,VS2015中C#连接Oracle数据库

硬件环境:Win10 64位 VS2015 ODP.Net for VS2015配置ODP.NetOracle Developer Tools for Visual Studio 12.1.0.2.4 下载次文件Oracle Data Provider for .NET 4 12.1.0.2.0Oracle Providers for ASP.NET 4 12.1.0.2.0下载完成后运行MSI安装程序进行安装&#xff0…

sql数据导入错误代码: 0x80004005_PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR...

抛出异常Oracle有三种类型的异常错误:1. 预定义(Predefined)异常ORACLE预定义的异常情况大约有24个。对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。2. 非预定义(Pr…

【转】const int *p和int * const p的区别(常量指针与指向常量的指针)

【转】作者:xwdreamer 出处:http://www.cnblogs.com/xwdreamer 对于指针和常量,有以下三种形式都是正确的: const char * myPtr &char_A;//指向常量的指针 char * const myPtr &char_A;//常量的指针 const char * con…

Oracle能用什么软件访问,使用工具访问ORACLE数据库(一)

常用的数据库工具 sqlplus保证你的实例是启动的:ps -elf |grep ora_ |grep -v grep,可以查看出已经启动的oracle进程发现很多ora_smon_orcl 名字:ora_进程名字_实例名字如何启动oracle实例export ORACLE_SIDorcl 指定登陆实例的名字叫o…

解决NTKO Office中文文件名保存到服务器时出现乱码的问题

再使用NTKO office控件时,在ntko往服务器提交文件时,中文文件名会出现乱码的问题! 其实解决这个问题可以换一种思路,在ntko往服务器提交文件时英文肯定是不会出现乱码的问题的! 那么想办法把中文文件名转换成英文放到隐…

python手势识别隐马尔可夫模型_使用隐马尔可夫模型的运动笔迹手势识别.doc

您所在位置:网站首页 > 海量文档&nbsp>&nbsp高等教育&nbsp>&nbsp科普读物使用隐马尔可夫模型的运动笔迹手势识别.doc10页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整性…

oracle连接数增加无法释放,Oracle连接数过多释放机制

在开发时,调试程序需要不断的连接数据库,这时到时Oracle服务器连接数过多会当掉,把连接数过多的客户机网线拔出后,在远程Oracle上依然还会保留此用户的连接数,久久不能释放,上网查了下可以以下面方法解决。…

腾讯视频过滤广告简略办法

转载于:https://www.cnblogs.com/rgqancy/articles/5485409.html