PHP数据结构大全地址之->模拟静态队列

PHP数据结构大全->


http://www.php1.cn/Search/?s_txt=PHP%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B9%8B



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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<?php
 
/********************************************************
* 我写的PHP都是从C语言的数据结构中演化而来************************
**************************************************************
 
/**
  *  1.用PHP模拟一个静态队列 (以数组为列子 只有6个元素) 是一个循环队列
  *  2.pBase->初始化后指向一个数组
  *  3.front ->初始化为0,指向队列的第一个元素
  *  4.rear->初始化为0,指向最后一个元素的下一个元素
  *  5.end_queue-> 保存出队的值以后的数字 
  *  6.en_queue ->入队列的方法
  *  7.full_queue->判断队列是否已满
  *  8.empty_queue->判断队列是否为空
  *  9.traverse_queue->遍历队列
  *  10.out_queue->出队的函数
  *  @Author 任孟洋 
  *  @time   2013-8-10
  ***/
 
  Class  Queue {
 
       public   $pBase ;        //一个数组
       public   $front ;        //指针指向队列的第一个元素 
       public   $rear ;         //指针指向队列的最后一个元素
       public   $End_queue ;    //记录出队的元素
       public   $Start_queue //记录入队的元素
 
        //初始化
       public   function   __construct(){       
            $this ->pBase =Array();
            $this ->front =  0;
            $this ->rear = 0;
       }
 
        // 入队
       public  function  en_queue(& $QUEUE , $val ){
 
         if  $this ->full_queue( $QUEUE )){
 
              return   FALSE;  //失败
         
               else  {        
                                                                          
            $QUEUE ->pBase[ $QUEUE ->rear] =  $val ;       //把元素入队 (成功)
                  
            $QUEUE ->rear =( $QUEUE ->rear+1) % 6; //rear往上移动一位
             
                    return    TRUE;
         
               }
       }
 
     //判断队列是否已满
    public  function  full_queue( $QUEUE ){
 
                if (( $QUEUE ->rear+1) % 6 ===  $QUEUE ->front){
               
                     return   TRUE;  //满
                
                else  {
                
                     return   FALSE;  //没满
                
                }
 
       }
   
     //判断是否为空
       public   function   empty_queue( $QUEUE ){
 
                if  ( $QUEUE ->front ==  $QUEUE ->rear){
                   
                      return  TRUE;
                
                else  {
                
                      return  FALSE;
                
                }
       }  
      
         //循环数输出队列
        public  function   traverse_queue( $QUEUE ){
         
              $q  $QUEUE ->front ;
              
              while  $q  !=  $QUEUE ->rear){
 
                   echo   '数列为<br/>' . $QUEUE ->pBase[ $q ]. '<br/>' ;
                                                                         
                   $q  = ( $q +1) % 6; //向上移动一位
              }
 
       }
 
       //出队
       public  function   out_queue( $QUEUE ){
             
                if (! $this ->empty_queue( $QUEUE )){
 
                      $this ->End_queue =  $QUEUE ->pBase[ $QUEUE ->front];
              
                      $QUEUE ->front = ( $QUEUE ->front + 1) % 6;   //向上移动一位       
              
                  
                   }
        }
}
 
    //输出界面
 
    //显示格式
    header( "Content-Type:text/html;charset=UTF-8;" );
    echo  '<hr/>' ;
    echo  '没有初始化之前的空间是多少' .var_dump(memory_get_usage());
    echo   '<hr/>'
     //实例化
    $QUEUE  new  Queue();
 
 
     /*入队*/
    $QUEUE ->en_queue( $QUEUE ,1);
    $QUEUE ->en_queue( $QUEUE ,2);
    $QUEUE ->en_queue( $QUEUE ,3);
    $QUEUE ->en_queue( $QUEUE ,4);
    $QUEUE ->en_queue( $QUEUE ,5);
    $QUEUE ->en_queue( $QUEUE ,6);
    
    /**出队**/
    $QUEUE ->out_queue( $QUEUE );
 
 
    /*入队*/
   $QUEUE ->en_queue( $QUEUE ,6);
   $QUEUE ->traverse_queue( $QUEUE );  //遍历
 
    echo  '<hr/>' ;
    echo  '出对以后的数字' . $QUEUE ->End_queue. '<br/>' ;
 
 
    echo  '初始化以后' .var_dump(memory_get_usage());
    echo   '<hr/>' ;
 
  
 
?>

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值