数据结构之队列——顺序存储结构(php代码实现——方法三)
<?php/***第三种——循环顺序队列的实现方法*此方法是解决前两种方法的缺点,利用循环队列的方法达到了最优时间复杂度和空间复杂度***/classSqQueue3{constARR_MAX=20;private$SqArr;private$front;private$rear;//初始化队列publicfunction__construct(){$this->SqArr=array();$this->front=0;$this->rear=0;}//销毁队列publicfunctionDestroyQueue(){$this->SqArr=null;$this->front=$this->rear=0;}//清空队列publicfunctionClearQueue(){$this->SqArr=array();$this->front=$this->rear=0;}//队列是否为空publicfunctionQueueEmpty(){if($this->front==$this->rear){return'Null';}else{return'NoNull';}}//队列的长度publicfunctionQueueLength(){return($this->rear-$this->front+self::ARR_MAX)%self::ARR_MAX;}//取得队头元素publicfunctionGetHead(){if($this->rear==$this->front){return'ERROR';}return$this->SqArr[$this->front];}//从队尾掺入元素publicfunctionEnQueue($elem){$tail=($this->rear+1)%self::ARR_MAX;//如果此值等于头元素说明队列已满if($tail==$this->front){return'ERROR';}$this->SqArr[$this->rear]=$elem;$this->rear=($this->rear+1)%self::ARR_MAX;return'OK';}//从队头删除元素publicfunctionDeQueue(){if($this->rear==$this->front){return'ERROR';}unset($this->SqArr[$this->front]);$this->front=($this->front+1)%self::ARR_MAX;return'OK';}//遍历队元素publicfunctionQueueTraverse(){$arr=array();for($i=0;$i<self::ARR_MAX;$i++){if(isset($this->SqArr[$i])){$arr[]=$this->SqArr[$i];}}return$arr;}//或者publicfunctionQueueTraverse2(){$arr=array();$i=$this->front;while($i!=$this->rear){$arr[]=$this->SqArr[$i];$i=($i+1)%self::ARR_MAX;}return$arr;}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。