php专区

 首页 > php专区 > PHP应用 > 常用功能 > PHP实现一个双向队列例子 - php高级应用

PHP实现一个双向队列例子 - php高级应用

分享到:
【字体:
导读:
          deque,全名double-ended queue,是一种具有队列和栈的性质的数据结构,双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行,双向队列(双端队列)就像是一个队列,但是你可以...

PHP实现一个双向队列例子

deque,全名double-ended queue,是一种具有队列和栈的性质的数据结构,双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行,双向队列(双端队列)就像是一个队列,但是你可以在任何一端添加或移除元素.

双端队列(deque)是由一些项的表组成的数据结构,对该数据结构可以进行下列操作:

push(D,X) 将项X 插入到双端队列D的前端

pop(D) 从双端队列D中删除前端项并将其返回

inject(D,X) 将项X插入到双端队列D的尾端

eject(D) 从双端队列D中删除尾端项并将其返回

PHP实现代码如下:

  1. class DoubleQueue   
  2. {  
  3.     public $queue = array();  
  4.       
  5.     /**(尾部)入队  **/ 
  6.     public function addLast($value)   
  7.     {  
  8.         return array_push($this->queue,$value);  
  9.     }  
  10.     /**(尾部)出队**/ 
  11.     public function removeLast()   
  12.     {  
  13.         return array_pop($this->queue);  
  14.     }  
  15.     /**(头部)入队**/ 
  16.     public function addFirst($value)   
  17.     {  
  18.         return array_unshift($this->queue,$value);  
  19.     }  
  20.     /**(头部)出队**/ 
  21.     public function removeFirst()   
  22.     {  
  23.         return array_shift($this->queue);  
  24.     }  
  25.     /**清空队列**/ 
  26.     public function makeEmpty()   
  27.     {  
  28.         unset($this->queue); 
  29.     }  
  30.       
  31.     /**获取列头**/ 
  32.     public function getFirst()   
  33.     {  
  34.         return reset($this->queue);  
  35.     }  
  36.     /** 获取列尾 **/ 
  37.     public function getLast()   
  38.     {  
  39.         return end($this->queue);  
  40.     } 
  41.  
  42.     /** 获取长度 **/ 
  43.     public function getLength()   
  44.     {  
  45.         return count($this->queue);  
  46.     } 
  47.       

例子,编写支持双端队伍的例程,每种操作均花费O(1)时间,代码如下:

  1. class deque 
  2.  public $queue  = array(); 
  3.  public $length = 0; 
  4.     
  5.  public function frontAdd($node){ 
  6.   array_unshift($this->queue,$node); 
  7.   $this->countqueue(); 
  8.  } 
  9.  public function frontRemove(){ 
  10.   $node = array_shift($this->queue); 
  11.   $this->countqueue(); 
  12.   return $node
  13.  } 
  14.     
  15.  public function rearAdd($node){ 
  16.   array_push($this->queue,$node); 
  17.   $this->countqueue(); 
  18.  } 
  19.    
  20.  public function rearRemove(){ 
  21.   $node = array_pop($this->queue); 
  22.   $this->countqueue(); 
  23.   return $node
  24.  } 
  25.    
  26.  public function countqueue(){ 
  27.   $this->length = count($this->queue);     
  28.  } 
  29. $fruit = new deque(); 
  30. echo $fruit -> length; 
  31. $fruit -> frontAdd("Apple"); 
  32. $fruit -> rearAdd("Watermelon"); 
  33. echo '
    '
  34. print_r($fruit); 
  35. echo ''
  36. ?> 
  37. /*结果 
  38. 0 
  39. deque Object 
  40. ( 
  41.     [queue] => Array 
  42.         ( 
  43.             [0] => Apple 
  44.             [1] => Watermelon 
  45.         ) 
  46.     [length] => 2 
  47. )*/ 
分享到:
PHP连接Memcache程序代码 - php高级应用
PHP连接Memcache程序代码 Memcache是php中常用到的一个高性能的分布式的内存对象缓存系统,我们可以利用它来对网站进行性能提高并且减少服务器负载,下面是我的学习笔记本大家一起看看,最简单的连接方法. 例子代码如下:   应用中会做一个类,代码如下: class MCache  {  ...
php怎么开启ssl?开启ssl的方法 - php高级...
php怎么开启ssl?开启ssl的方法 当访问启用SSL资源的时候,会出现\"did you forget to enable it when you configured PHP\"错误提示,从提示我们可以看出肯定是php.ini中没有配置好SSL模块。打开php.ini找到extension=php_openssl.dll,取消注释. 在PHP开启SSL的方法很简单,先找到php.ini文件,...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……