本文实例讲述了PHP实现的栈数据结构。分享给大家供大家参考,具体如下:
利用php面向对象思想,栈的属性有top、最大存储数、和存储容器(这里利用了php数组)。
代码如下:实现了入栈、出栈、遍历栈的几个方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<?php
class Stack{
const MAXSIZE = 4; // 栈最大容量
private $top = -1;
private $stack = array (); // 利用数组存储数据
public function __construct(){
$this ->stack = array ();
}
// 入栈
public function push( $ele ){
if ( $this ->top >= self::MAXSIZE-1){
echo 'stack is full...' ;
return false;
}
$this ->stack[++ $this ->top] = $ele ; // 此处必须是++i,先计算再使用
}
// 出栈,返回出栈元素
public function pop(){
if ( $this ->top == -1){
echo 'stack is empty...' ;
return false;
}
$ele = $this ->stack[ $this ->top];
unset( $this ->stack[ $this ->top--]); // 此处必须是i--,先使用再计算(注意出栈和入栈的区别)
return $ele ;
}
// 遍历栈
public function show(){
if ( $this ->top == -1){
echo 'stack is empty...' ;
return false;
}
for ( $i = $this ->top; $i >-1; $i --){
echo $this ->stack[ $i ]. '<br/>' ;
}
}
}
$stack = new Stack;
$stack ->push(1);
$stack ->push(2);
$stack ->push(3);
$stack ->push(4);
//print_r($stack);
$stack ->show();
$a = $stack ->pop();
$a = $stack ->pop();
$a = $stack ->pop();
$stack ->show();
|
运行结果:
1
2
3
4
5
|
4
3
2
1
1
|
希望本文所述对大家PHP程序设计有所帮助。
原文链接:http://www.cnblogs.com/firstForEver/p/5252277.html