首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 用數組實現堆棧(Stack)數據結構

     編輯:PHP 綜合知識

堆棧特性

後進先出 (LIFO):最後壓入的元素最先彈出。核心操作:push(入棧)、pop(出棧)、top(查看頂部)。

PHP 內建函數映射

操作PHP 函數說明
pusharray_push($stack, $val)返回新長度
poparray_pop($stack)返回彈出值,空棧返回 null
topend($stack) 或 $stack[count($stack)-1]不移除
isEmptyempty($stack)
sizecount($stack)

完整封裝類

<?php
class Stack {
    private array $data = [];
    public function push(mixed $value): int { return array_push($this->data, $value); }
    public function pop(): mixed { return array_pop($this->data); }
    public function top(): mixed { return $this->data[array_key_last($this->data)] ?? null; }
    public function isEmpty(): bool { return empty($this->data); }
    public function size(): int { return count($this->data); }
    public function toArray(): array { return $this->data; }
    public function clear(): void { $this->data = []; }
}

// 使用
$stack = new Stack();
$stack->push('WEB');
$stack->push('PHP');
$stack->push('WWW.CHHUA.COM');
print_r($stack->toArray()); // ['WEB', 'PHP', 'WWW.CHHUA.COM']
echo $stack->pop();         // WWW.CHHUA.COM
print_r($stack->toArray()); // ['WEB', 'PHP']

應用場景

  • 表達式求值(中綴轉後綴、括號匹配)。
  • 瀏覽器歷史/前進後退。
  • 遞歸算法的迭代實現(深度優先搜索)。
  • 撤銷/重做功能(命令模式配合雙棧)。

性能提示

  • PHP 數組底層是有序哈希表,array_push/pop 在末尾操作為 O(1) 擴攤。
  • 避免在循環中頻繁 count(),緩存長度或用 $stack->size()。
  • 大數據量(>10萬)考慮 SplStack(C 實現,略快且嚴格 LIFO)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved