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());

结果
PHP/Golang实现—数据结构之链栈_第1张图片

你可能感兴趣的:(数据结构,数据结构,链栈,PHP)