【php实现数据结构】链式队列
什么是链式队列
队列是一种“先进先出”的存储结构,是一种特殊的线性表,于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
通常队列可以分为顺序队列和链式队列两种实现,
顺序队列顾名思义就是采用顺序存储,如以数组方式来实现,
链式队列采用链式存储,如以上篇说到的单向链表来实现,
链式队列是以链式数据结构实现的队列
队列有两个基本的操作,入队列和出队列
代码实现
链式队列实现方式多种多样,可以以单链表,双向链表,循环链表等各种方式来实现,这里以上篇提到的单链表的方式来实现。
<?php 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);
相关推荐
koushr 2020-11-12
范范 2020-10-28
qiangde 2020-09-13
范范 2020-07-30
mingyunxiaohai 2020-07-19
zhangxiafll 2020-11-13
kikaylee 2020-10-31
MILemon 2020-10-22
hugebawu 2020-10-12
LauraRan 2020-09-28
shenwenjie 2020-09-24
omyrobin 2020-09-23
guangcheng 2020-09-22
hanyujianke 2020-08-18
晨曦之星 2020-08-14
xiesheng 2020-08-06
KAIrving 2020-08-02
xiesheng 2020-08-02