作为开发人员,经常会在项目中遇使用到队列,而有时候需要自己单独实现队列机制,而也有部分新手对与队列认识不清晰,本教程,从代码上,直观的展示了队列的实现 和使用过程。 <?php /** * @Function 双向队列实现 * * * @author yg-w * * @date 2017-12-23 * */ class queue{ private $list = []; private static $instance; /** * * @Function 实例化 * * @return queue * */ public static function getInstance(){ if(!self::$instance instanceof self){ self::$instance = new self(); } return self::$instance; } /** * @Function 入队-首部 * * @param $val * * @desc: * 需要注意的是,要向队列的首位插入新的值,则需要先将该队列的所有元素位置向后移 * * 动一位,完成后,在最后空下来的第一个位置插入新的值。 * * @return boolean */ public function push_first($val){ return array_unshift($this->list,$val); } /** * @Function 入队-尾部 * * @param $val * * @return boolean * */ public function push_last($val){ return array_push($this->list,$val); } /** * @Function 出队-首位 ** @desc * 需要注意的是,每次从首位置删除一个元素后,需要将队列中所有剩余的元素向前移动一位。 *
*
* @return string */ public function pop_first(){ return array_shift($this->list); } /** * @Function 出队-尾部 * * @return string * */ public function pop_last(){ return array_pop($this->list); } /** * * @Function 查看队列当前情况( 仅用于测试 ) * * @return array * */ public function get_list(){ return $this->list; }}//实例化队列类$queue = queue::getInstance();/** * 从队列首位入队: $queue->push_first() * 从队列尾部入队: $queue->push_last() *///向队列首位插入20次for($i=1;$i<=20;$i++){ $queue->push_first($i); echo "入队: ".$i.PHP_EOL;}/** * 从前到后出队: $queue->pop_first() * 从后到前出队: $queue->pop_last() *///从尾部进行出队操作 : 当队列中所有元素出队后,结束执行while($p_val = $queue->pop_last()) { echo "出队: ".$p_val . PHP_EOL;}var_dump($queue->get_list());运行结果:入队: 1入队: 2入队: 3入队: 4入队: 5入队: 6入队: 7入队: 8入队: 9入队: 10入队: 11入队: 12入队: 13入队: 14入队: 15入队: 16入队: 17入队: 18入队: 19入队: 20出队: 1出队: 2出队: 3出队: 4出队: 5出队: 6出队: 7出队: 8出队: 9出队: 10出队: 11出队: 12出队: 13出队: 14出队: 15出队: 16出队: 17出队: 18出队: 19出队: 20array(0) {} 如有疑问,或有更好的方法,欢迎留言讨论!
PHP实现双向队列
最新推荐文章于 2021-06-15 14:18:12 发布