• 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>";
    
    ?>

    实现结果:

  • 相关阅读:
    linux 学习笔记
    linux 子系统折腾记 (三)
    linux子系统折腾记 (二)
    windows linux 子系统折腾记
    会计学习笔记(非专业)
    linux 大冒险
    coreRT 和 Native 编译netcore AOT程序
    dotnet core如何编译exe
    win10的hyper-v共享文件夹
    packagereference 里面的资产是怎么回事?
  • 原文地址:https://www.cnblogs.com/xlzfdddd/p/9824291.html
Copyright © 2020-2023  润新知