zoukankan      html  css  js  c++  java
  • 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>";
    
    ?>

    实现结果:

  • 相关阅读:
    异或加密的Python实现
    pep9课下作业
    2020-2021-1 20201319 《信息安全专业导论》第四周学习总结
    我的黑客偶像
    2020-2021-3 20201319 《信息安全专业导论》第三周学习总结
    罗马数字转阿拉伯数字
    IEEE754浮点数
    BASE64编码
    2020-2021-1 20201319 《信息安全导论》第二周学习总结
    对师生关系的想法
  • 原文地址:https://www.cnblogs.com/xlzfdddd/p/9824291.html
Copyright © 2011-2022 走看看