<?php
/**
* @desc
* 栈的定义:仅在表尾(栈顶)进行插入和删除操作的线性表。元素具有相同类型和后继关系
* 栈的插入叫进栈,压栈,入栈 push
* 栈的删除叫出栈,弹栈 pop
*
* 栈的链式存储结构。
* 栈不存在线性表插入和删除时需要大量移动元素,因为他只准栈顶进出
*
* 顺序与链,他们在时间复杂度上都一样,都为O(1).
* 顺序在C语言中,需要事先确定一个固定的长度,而在PHP是弱类型语言,数组长度不需要指定,所以不需要事先设定。
* 链则要求每个元素都有指针域,增加了内存开销,但对于长度无限制。
*
* @author ranping
*/
class LinkStack {
public $top;
public $count;
public function initStack(){}
public function destoryStack(){}
public function clearStack(){}
public function stackEmpty(){
return $this->count == 0;
}
public function getTop(){}
public function push($elem){
$node = new StackNode();
$node->data = $elem;
$node->next = $this->top;
$this->top = $node;
$this->count ++;
return true;
}
public function pop(){
if($this->stackEmpty()) {
return false;
}
$elem = $this->top->data;
$top = $this->top;
$this->top = $this->top->next;
$this->count--;
unset($top);
return $elem;
}
public function stackLength(){
}
}
class StackNode {
public $data;
public $next;
}