PHP实现循环队列(顺序结构)

本文介绍了一种基于数组的循环队列实现方法,并通过具体示例代码展示了如何进行元素的入队和出队操作,同时提供了队列长度计算功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

队列:先进先出,是一个应用很广泛的数据结构,不管是存储还是消息,还是待执行任务等等,生活以及软件中使用的栗子比比皆是。


不多说直接上代码,参考多家,觉得这个是最符合中心思想的。为了区分是否满队列,我们还是j决定使用空一格是满的,示意图如下

wKioL1lwlnCwmTTVAAJBGlEjR8c807.png



直接上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//循环队列,顺序存储
class  queue{
     private  $data ;
     private  $front ;
     private  $rear ;
     
     //定义最大容量
     const  MAX=5;
     //定义数量
      //初始化队列,头指针和尾指针都只指向0,而且我们的满规定是空一个。
     function  __construct(){
         $this ->data= array ();
         $this ->front=0;
         $this ->rear=0;
         
         echo  "队列准备ok" ;
     }
     //一个有趣的小公式,因为我们规定中间间隔一个就是满了,原理和示意图用图片
     public  function  queueLength(){
         echo  ( $this ->rear- $this ->front+self::MAX)%self::MAX;
     }
     
     //入队列
     //没必要加入本队列参数,用$this
     public  function  inQueue( $e ){
         if (( $this ->rear+1)%(self::MAX)== $this ->front){
             echo  '队列已经满了' ; die ;
         }
         
         $this ->data[ $this ->rear]= $e ;
         $this ->rear=( $this ->rear+1)%(self::MAX);
         
         echo  'ok' ;
     }
     
     public  function  deQueue(){
         if ( $this ->front== $this ->rear){
             echo  '队列是空的' ; die ;
         }
         //var $tmp;
         //$tmp =
         $this ->data[ $this ->front]= '' ;
         $this ->front = ( $this ->front+1)%self::MAX;
         //unset($this->data[$this->front]);
         
         echo  'ok' ;
     }
}

测试代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
     $obj = new  queue();
$obj ->inQueue(1);
$obj ->inQueue(2);
var_dump( $obj );
$obj ->deQueue();
var_dump( $obj );
$obj ->inQueue(3);
var_dump( $obj );
$obj ->inQueue(4);
var_dump( $obj );
$obj ->inQueue(5);
var_dump( $obj );
$obj ->deQueue();
var_dump( $obj );
$obj ->deQueue();
var_dump( $obj );
$obj ->deQueue();
var_dump( $obj );
$obj ->deQueue();
var_dump( $obj );
$obj ->queueLength();
$obj ->inQueue(1);
var_dump( $obj );
$obj ->inQueue(2);
var_dump( $obj );

有一首小诗我觉得作者写的很好,增加点文学气息

wKiom1lwl1CjN9PdAAIuKwQDA88460.png

wKioL1lwl1HBICNBAAJMyh01H_Y993.png



谢谢,愿法界众生,皆得安乐

本文转自 jackdongting 51CTO博客,原文链接:http://blog.51cto.com/10725691/1949508


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值