客官,留下你的赞;成为我的粉丝,一起上车哦!评论区欢迎你的留言
重温数据结构。相关代码集放在GitHub
上,欢迎Star
、Fork
和一起加入。目前只有PHP版本;后续会增加Golang版本,后续会不断更新,欢迎指正。
代码示例
/**
* 链栈
* @author new1024kb
*/
// 栈节点
class stackNode {
/**
* [$data 元素]
* @var [type]
*/
public $data;
/**
* [$next 指向下一个栈元素]
* @var [type]
*/
public $next;
/**
* [__construct 栈节点初始化]
* @Author pengw
* @DateTime 2020-06-22T00:08:24+0800
*/
public function __construct() {
$this->data = NULL;
$this->next = NULL;
}
}
// 链栈
class linkStack {
/**
* [$top 指向栈顶(链栈的头)]
* @var [type]
*/
public $top;
/**
* [$count 链栈节点总个数]
* @var [type]
*/
public $count;
public function __construct() {
$this->top = NULL;
$this->count = 0;
}
/**
* [push 入栈]
* @Author pengw
* @DateTime 2020-06-22T00:10:11+0800
* @param string $element [入栈元素]
* @return [string] [description]
*/
public function push(string $element): string {
if(empty($element)) {
return '入栈元素为空';
}
// 创建节点
$stack_node = new stackNode();
$stack_node->data = $element;
$stack_node->next = $this->top;
$this->top = $stack_node;
++$this->count;
return '入栈成功';
}
/**
* [pop 出栈操作]
* @Author pengw
* @DateTime 2020-06-22T00:11:10+0800
* @return [string] [description]
*/
public function pop(): string {
if($this->top == NULL) {
return '空链栈';
}
$e = $this->top->data;
$this->top = $this->top->next;
--$this->count;
return $e;
}
/**
* [showLinkStackElement 展示链栈中所有元素节点]
* @Author pengw
* @DateTime 2020-06-22T00:11:56+0800
* @return [] [description]
*/
public function showLinkStackElement() {
return $this;
}
}
测试
$l = new linkStack;
var_dump($l->push(1)); // 入栈成功
var_dump($l->push(2)); // 入栈成功
var_dump($l->showLinkStackElement());
结果