3.3 栈的链式存储结构

<?php
header("content-type:text/html;charset=utf-8");
/**
 * 栈的链式存储结构的基本操作
 *
 *包括
 * 1.初始化 __contruct()
 * 2.进栈操作 push()
 * 3.出栈操作 pop()
 * 4.销毁栈 destroyStack()
 * 5.清空栈 clearStack()
 * 6.遍历栈 stackTraverse()
 */
class Node{
    public $data;
    public $next;
    public function __construct($data=null)
    {
        $this->data = $data;
        $this->next = null;
    }
}
class Node_stack{
    private $top;
    private $count;
    //初始化栈
    public function __construct(){
        $this->top=null;
        $this->count=0;
    }
    //进栈操作push()
    public function push($elem){
        $node = new Node();
        $node->data = $elem;
        $node->next = $this->top;
        $this->top = $node;
        $this->count++;
    }
    //出栈操作pop()
    public function pop(){
        if($this->top == null){
            echo "栈已空";
            return false;
        }else{
            $value = $this->top->data;
            unset($this->top->data);
            $this->top = $this->top->next;
            $this->count--;
            return $value;
        }
    }
    //销毁栈
    public function destroyStack(){
        $p=$this->top;
        while ($p){
            $p=$this->top->next;
            unset($this->top);
            $this->top=$p;
        }
        $this->count=0;
    }
    //清空栈
    public function clearStack(){
        $p=$this->top;
        while ($p){
            $p->next = null;
        }
        $this->top=null;
        $this->count=0;
    }
    //遍历栈
    public function stackTraverse(){
        if($this->top ==null){
            echo "栈已空";
            return false;
        }else{
            $array = array();
            $p=$this->top;
            while ($p){
                array_push($array,$p->data);
                $p = $p->next;
            }
            return $array;
        }
    }
}
?>

实现函数:

<?php
header("content-type:text/html;charset=utf-8");
include 'node_stack.class.php';
$node_stack = new Node_stack();
echo "进栈操作:";
echo "</br>";
$node_stack->push(1);
$node_stack->push(2);
$node_stack->push(3);
$node_stack->push(4);
$node_stack->push(5);
print_r($node_stack);
echo "</br>";
echo "</br>";
echo "遍历栈:";
echo "</br>";
$stack_array = $node_stack->stackTraverse();
print_r($stack_array);
echo "</br>";
echo "</br>";
echo "出栈操作:";
echo "</br>";
$value = $node_stack->pop();
echo $value;
echo "</br>";
print_r($node_stack);
echo "</br>";
echo "直至栈空:";
echo "</br>";
$node_stack->pop();
$node_stack->pop();
$node_stack->pop();
$node_stack->pop();
$node_stack->pop();
echo "</br>";
print_r($node_stack);
echo "</br>";
echo "</br>";

?>

实现结果:

posted @ 2018-10-21 10:41  小林子奋斗的点滴  阅读(147)  评论(0编辑  收藏  举报