PHP实现栈(Stack)数据结构_PHP教程
数据结构与算法(PHP实现) - 栈(Stack) 1
/**
* 数据结构与算法(PHP实现) - 栈(Stack)。
*
* @author 创想编程(TOPPHP.ORG)
* @copyright Copyright (c) 2013 创想编程(TOPPHP.ORG) All Rights Reserved
* @license http://www.opensource.org/licenses/mit-license.php MIT LICENSE
* @version 1.0.0 - Build20130607
*/
class Stack {
/**
* 栈。
*
* @var array
*/
private $stack;
/**
* 栈的长度。
*
* @var integer
*/
private $size;
/**
* 构造方法 - 初始化数据。
*/
public function __construct() {
$this->stack = array();
$this->size = 0;
}
/**
* 压栈(进栈、入栈)操作。
*
* @param mixed $data 压栈数据。
* @return object 返回对象本身。
*/
public function push($data) {
$this->stack[$this->size++] = $data;
return $this;
}
/**
* 弹栈(退栈、出栈)操作。
*
* @return mixed 空栈时返回FALSE,否则返回栈顶元素。
*/
public function pop() {
if (!$this->isEmpty()) {
$top = array_splice($this->stack, --$this->size, 1);
return $top[0];
}
return FALSE;
}
/**
* 获取栈。
*
* @return array 返回栈。
*/
public function getStack() {
return $this->stack;
}
/**
* 获取栈顶元素。
*
* @return mixed 空栈时返回FALSE,否则返回栈顶元素。
*/
public function getTop() {
if (!$this->isEmpty()) {
return $this->stack[$this->size - 1];
}
return FALSE;
}
/**
* 获取栈的长度。
*
* @return integer 返回栈的长度。
*/
public function getSize() {
return $this->size;
}
/**
* 检测栈是否为空。
*
* @return boolean 空栈则返回TRUE,否则返回FALSE。
*/
public function isEmpty() {
return 0 === $this->size;
}
}
?>
示例代码 1
$stack = new Stack();
$stack->push(1)->push(2)->push(3)->push(4)->push(5)->push(6);
echo '
', print_r($stack->getStack(), TRUE), '';
$stack->pop();
echo '
', print_r($stack->getStack(), TRUE), '';
?>
说明:PHP数组函数已有类似栈的功能函数存在:array_push(压栈)和、array_pop(弹栈)。
上一篇: php中关于websocket的详细介绍
下一篇: 关于cdn日志的4篇文章推荐
推荐阅读
-
PHP写日志的实现方法,php日志实现_PHP教程
-
PHP实现将浏览历史页面网址保存到cookie的方法,phpcookie_PHP教程
-
php实现的IMEI限制的短信验证码发送类,imei验证码_PHP教程
-
linux php mysql数据库备份实现代码_PHP教程
-
使用PHP和HTML5 FormData实现无刷新文件上传教程_PHP
-
PHP如何利用P3P实现跨域_PHP教程
-
100行PHP代码实现socks5代理服务器,100行socks5_PHP教程
-
用PHP实现一个双向队列_PHP教程
-
php获取四位字母和数字的随机数的实现方法,四位随机数_PHP教程
-
PHP实现取得HTTP请求的原文,_PHP教程