2009年1月22日 星期四

堆疊

堆疊是一種後進先出的資料結構,這種資料結構類似上部開口的杯子,把從球上方的開口丟進杯子後,就要從上方的開口處取出球。

資料在堆疊中放進去的方式及取出的方式也是相同的,先丟進去的資料,必須等上層的資料都被取出後,才能取出。

這是一種後進先出的方式,最後丟進去的資料,可以最先被取出來使用,最早被丟進去的資料,卻必須在所有資料取出後,才能取出。

class Stack{

private $sp=-1;
private $spMax=100;
private $data=array();

public function pop(){
if($this->sp >= 0){
$result=$this->data[$this->sp];
unset($this->data[$this->sp]);
$this->sp--;
return $result;
}
}

public function push($data){
if($this->sp < $this->spMax){
$this->sp++;
$this->data[$this->sp]=$data;
}
}

public function setSpMax($max){
$this->spMax=(int)$max;
}
}


$stack = new Stack();
$stack->push('a');
$stack->push('b');

echo $stack->pop();
echo '
'."\n";
echo $stack->pop();


程式碼說明:
一個很簡單的類別,專門處理堆疊。

Stack::pop() 取出資料
Stack::push() 放進資料
Stack::setSpMax() 設定堆疊能存放的資料筆數

沒有留言: