您好,登錄后才能下訂單哦!
<?php /** 1. DestroyStack(): 棧的銷毀 2. ClearStack(): 將棧置為空棧 3. StackEmpty(): 判斷棧是否為空 4. StackLength(): 返回棧的長度 5. GetTop(): 取得棧頂的元素 6. Push(): 插入新的棧頂元素 7. Pop(): 刪除棧頂元素 8. StackTraverse(): 遍歷棧元素 */ //除了push和pop方法外,其余的方法和之前線性表的順序存儲的代碼實現基本相同 class SqStack{ public $SqArr;//此處是用于存儲棧元素的數組 private $top; //表示棧頂,相當于數組的最后一個元素下標 public function __construct($SqArr){ $this->SqArr=$SqArr; $this->top=count($SqArr)-1; } //棧的銷毀 public function DestroyStack(){ $this->SqArr=null; $this->top=-1; } //將棧置為空棧 public function ClearStack(){ $this->SqArr=array(); $this->top=-1; } //判斷棧是否為空 public function StackEmpty(){ if($this->top==-1){ return 'Null'; }else{ return 'No Null'; } } //返回棧的長度 public function StackLength(){ if(is_null($this->SqArr)){ return null; } return $this->top+1; } //取得棧頂的元素 public function GetTop(){ if($this->top==-1){ return 'ERROR'; } return $this->SqArr[$this->top]; } //插入新的棧頂元素 public function Push($elem){ $this->top++; $this->SqArr[$this->top]=$elem; } //刪除棧頂元素 public function Pop(){ if($this->top==-1){ return 'ERROR'; } $p=$this->SqArr[$this->top]; unset($this->SqArr[$this->top]); //注,此句可以有也可以沒有,如果此語句存在,則在堆棧內存中會將此棧頂元素真正的刪除;倘若沒有此語句,則僅僅是top指針不在指向此棧頂元素了。另外,此語句有沒有對應的下面的遍歷方法的實現也不同,沒有則對應StackTraverse()方法,有則對應StackTraverse2()方法。 $this->top--; return $p; } //遍歷棧元素 public function StackTraverse(){ if(is_null($this->SqArr)){ return null; } $arr=array(); for($i=0;$i<=$this->top;$i++){ $arr[]=$this->SqArr[$i]; } return $arr; } public function StackTraverse2(){ return $this->SqArr; } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。