堆栈是一种线性动态数据结构,遵循后进先出(LIFO)原则。在堆栈中,新元素的添加和元素的删除发生在同一端,这意味着堆栈中最后添加的元素将最先从堆栈中删除。
功能堆栈
- 它是一个动态数据结构。
- 它具有动态大小。
- 它使用动态内存分配。
堆栈的操作
- isEmpty():检查堆栈是否为空。
- size():返回堆栈的大小。
- topElement():返回堆栈的顶部元素。
- Push(x):在堆栈顶部添加一个新元素"x"。因此,堆栈的大小增加 1。
- pop():删除栈顶元素。因此,堆栈的大小减少 1。
堆栈的实现
<?php
class CreateStack {
public $top;
public $stack = array();
function __construct() {
$this->top = -1;
}
//创建一个函数来检查
//栈是否为空
public function isEmpty() {
if($this->top == -1) {
echo "Stack is empty. \n";
} else {
echo "堆栈不为空. \n";
}
}
//创建一个函数来返回堆栈的大小
public function size() {
return $this->top+1;
}
//创建一个函数来添加新元素
public function push($x) {
$this->stack[++$this->top] = $x;
echo $x." 被添加到堆栈中. \n";
}
//创建删除顶部元素的函数
public function pop() {
if($this->top < 0){
echo "Stack is empty. \n";
} else {
$x = $this->stack[$this->top--];
echo $x." 从堆栈中删除. \n";
}
}
public function topElement() {
if($this->top < 0) {
echo "栈为空. \n";
} else {
return $this->stack[$this->top];
}
}
}
//测试代码
$MyStack = new CreateStack();
$MyStack->push(10);
$MyStack->push(20);
$MyStack->push(30);
$MyStack->push(40);
$MyStack->pop();
$MyStack->isEmpty();
?>
上面的代码将给出以下输出:
10 被添加到堆栈中.
20 被添加到堆栈中.
30 被添加到堆栈中.
40 被添加到堆栈中.
40 从堆栈中删除.
堆栈不为空.