定义
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
代码实现
建立在这篇文章的基础上链表的实现
class LinklistStack extends Linklist {
public function push($val){
$this->addFirst($val);
}
public function pop(){
$val = $this->head->next->val;
$this->delete(0);
return $val;
}
}
测试
$stack = new LinklistStack();
$stack->push(111);
$stack->push(2222);
print_r($stack);
echo $stack->pop()."\n";
print_r($stack);exit;
输出结果
LinklistStack Object
(
[head] => Node Object
(
[val] =>
[next] => Node Object
(
[val] => 2222
[next] => Node Object
(
[val] => 111
[next] =>
)
)
)
[size] => 2
[map] => Array
(
)
)
2222
LinklistStack Object
(
[head] => Node Object
(
[val] =>
[next] => Node Object
(
[val] => 111
[next] =>
)
)
[size] => 1
[map] => Array
(
)
)