zoukankan      html  css  js  c++  java
  • 《数据结构

    一:链式存储 和 顺序结构 对比?

      - 栈的 顺序结构 与 链结构,他们在时间复杂度上都一样,都为O(1).

      - 如果栈的数量可预知,则使用顺序栈,否则,则使用链栈

      - 链栈 要求每个元素都有指针域,增加了内存开销,但对于长度无限制。

    二:栈-链式结构

    <?php
    /**  
     * 
     * 栈的 顺序结构 与 链结构,他们在时间复杂度上都一样,都为O(1).
     * 如果栈的数量可预知,则使用顺序栈,否则,则使用链栈
     * 链栈 要求每个元素都有指针域,增加了内存开销,但对于长度无限制。
     */
    class LinkStack
    {
        public $top;   // 栈顶位置
        public $count; // 栈长度
            
        public function push($elem)
        {
            $node       = new StackNode();
            $node->data = $elem;      // 数据
            $node->next = $this->top; // 下一个结点指针
            $this->top  = $node;      // 当前栈顶
            $this->count++;           // 栈长度变化
            return true;
        }
    
        public function pop()
        {
            if($this->count == 0) return false; // 空栈没有数据,无法出栈
            $elem = $this->top->data; // 获取栈顶数据,出栈
            $top  = $this->top;
            $this->top = $this->top->next;
            $this->count--;
            unset($top);
            return $elem;
        }
    }
    
    class StackNode {
        public $data;
        public $next;
    }
    
    $stack = new LinkStack();
    $stack->push(1);
    $stack->push(2);
    // $stack->push(3);
    // $stack->push(4);
    // $stack->push(5);
    
    print_r($stack->pop());
    print_r($stack->pop());
    print_r($stack->pop());
    // var_dump($stack);
    // var_dump($stack->top->next);
  • 相关阅读:
    mysql下载与安装
    Observable Flowable Test
    Linux 技巧:让进程在后台可靠运行的几种方法
    CallBack
    Linux内存分析
    Linux安装svn
    百度地图api
    安装Mysql官方的sakila数据库
    yii2 展示静态页面
    yii2 手动安装第三方扩展
  • 原文地址:https://www.cnblogs.com/25-lH/p/10431229.html
Copyright © 2011-2022 走看看