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

来源:互联网 发布:小鸭淘宝复制软件 编辑:程序博客网 时间:2024/05/01 23:19

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/>';
 
  
 
?>

 


0 0