【php实现数据结构】链式队列

发布时间:2019-08-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【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);

脚本宝典总结

以上是脚本宝典为你收集整理的【php实现数据结构】链式队列全部内容,希望文章能够帮你解决【php实现数据结构】链式队列所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。