您好,登錄后才能下訂單哦!
<?php /** 1. DestroyStack(): 棧的銷毀 2. ClearStack(): 將棧置為空棧 3. StackEmpty(): 判斷棧是否為空 4. StackLength(): 返回棧的長(zhǎng)度 5. GetTop(): 取得棧頂?shù)脑? 6. Push(): 插入新的棧頂元素 7. Pop(): 刪除棧頂元素 8. StackTraverse(): 遍歷棧元素 */ //除了push和pop方法外,其余的方法和之前線性表的順序存儲(chǔ)的代碼實(shí)現(xiàn)基本相同 class SqStack{ public $SqArr;//此處是用于存儲(chǔ)棧元素的數(shù)組 private $top; //表示棧頂,相當(dāng)于數(shù)組的最后一個(gè)元素下標(biāo) 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'; } } //返回棧的長(zhǎng)度 public function StackLength(){ if(is_null($this->SqArr)){ return null; } return $this->top+1; } //取得棧頂?shù)脑? 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]); //注,此句可以有也可以沒(méi)有,如果此語(yǔ)句存在,則在堆棧內(nèi)存中會(huì)將此棧頂元素真正的刪除;倘若沒(méi)有此語(yǔ)句,則僅僅是top指針不在指向此棧頂元素了。另外,此語(yǔ)句有沒(méi)有對(duì)應(yīng)的下面的遍歷方法的實(shí)現(xiàn)也不同,沒(méi)有則對(duì)應(yīng)StackTraverse()方法,有則對(duì)應(yīng)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; } }
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。