PHP 標準庫 SplStack 棧

邢闖洋發表於2021-05-19

棧有什麼特點

棧遵循後進先出的原則 (LIFO)。這意味著棧只有一個出口用來壓入元素和彈出元素,當我們執行壓入或者彈出操作的時候要注意棧是否已滿或者棧是否是空的。

棧的方法

  • push
  • pop
  • top
  • bottom
  • isEmpty
  • offsetSet
  • offsetGet
  • offsetExists
  • offsetUnset

程式碼

<?php
header("Content-type:text/html; charset=utf-8");

$stack = new SplStack();

//LIFO
echo 'stack push',PHP_EOL;

//入棧
$stack->push('hello');
$stack->push('world');
$stack->push('web');
$stack[] = 'site';
$stack[] = 'devlop';


echo '***************',PHP_EOL;

//設定index為 0 的元素(棧頂)的值為 DEVLOP,遍歷棧
$stack->offsetSet(0, 'DEVLOP');
foreach($stack as $val) {
    echo $val,PHP_EOL;
}

echo '***************',PHP_EOL;
//檢視棧元素個數
echo '棧內有',$stack->count(),'個元素',PHP_EOL;
echo '棧內有',count($stack),'個元素',PHP_EOL;

echo '***************',PHP_EOL;
//檢視棧頂、棧底元素
echo '棧頂元素是',$stack->top(),PHP_EOL;
echo '棧底元素是',$stack->bottom(),PHP_EOL;

echo '***************',PHP_EOL;
//遍歷棧
foreach($stack as $val) {
    echo $val,PHP_EOL;
}

echo '***************',PHP_EOL;
//出棧
while($stack->count() != 0) {
    echo '棧頂元素是:',$stack->top(),PHP_EOL;
    $stack->pop();
}

輸出

stack push
***************
DEVLOP
site
web
world
hello
***************
棧內有5個元素
棧內有5個元素
***************
棧頂元素是DEVLOP
棧底元素是hello
***************
DEVLOP
site
web
world
hello
***************
棧頂元素是:DEVLOP
棧頂元素是:site
棧頂元素是:web
棧頂元素是:world
棧頂元素是:hello

參考來源

PHP 標準庫 SPL 之資料結構棧(SplStack)簡單實踐 - 韶華休笑 - 部落格園 (cnblogs.com)

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章