<?php/***第二种——非循环顺序队列的实现方法*此方法,对第一种实现方法进行了优化,出队时不再移动元素*仅仅改变头指针的位置即可**此方法的优缺点:*优点:插入和删除的时间复杂度都已是O(1),效率比较高*缺点:元素删除后,前面的空间就无法再进行利用,造成空间的浪费**/classSqQueue2{private$SqArr;private$front;//指向队头元素private$rear;//如果队列不为空,则指向队尾元素的下一个位置//对变量进行初始化publicfunction__construct(){$this->SqArr=array();$this->front=0;$this->rear=0;}//销毁队列publicfunctionDestroyQueue(){$this->SqArr=null;$this->front=0;$this->rear=0;}//清空队列publicfunctionClearQueue(){$this->SqArr=array();$this->front=$this->rear=0;}//判断队列是否为空publicfunctionQueueEmpty(){if($this->front==$this->rear){return'Null';}else{return'NoNull';}}//取得队头元素publicfunctionGetHead(){if($this->front==$this->rear){return'ERROR';}return$this->SqArr[$this->front];}//队列的长度publicfunctionQueueLenghth(){return$this->rear-$this->front;}//从队尾插入元素publicfunctionEnQueue($elem){$this->SqArr[$this->rear++]=$elem;}//从队头删除元素publicfunctionDeQueue(){if($this->front==$this->rear){return'ERROR';}unset($this->SqArr[$this->front]);$this->front++;return'OK';}//遍历队列元素publicfunctionQueueTraverse(){$arr=array();for($i=$this->front;$i<$this->rear;$i++){$arr[]=$this->SqArr[$i];}return$arr;}}