PHP/Golang实现—数据结构之链栈

客官,留下你的赞;成为我的粉丝,一起上车哦!评论区欢迎你的留言

重温数据结构。相关代码集放在GitHub上,欢迎StarFork和一起加入。目前只有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());

结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值