zoukankan      html  css  js  c++  java
  • JavaScript引用类型之Array数组的栈方法与队列方法

    一、栈方法

    ECMAScript数组也提供了一种让数组的行为类似与其他数据结构的方法。具体的来说,数组可以变现的向栈一样,栈就是一种可以限制插入和删除向的数据结构。栈是一种LIFO(Last In First Out先进后出)的数据结构,也就是最新添加的项最早被移出,ECMAScript为数组专门提供了push()和pop()方法,以便实现类似栈的行为。

    1、push()方法可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度,代码如下:

    <script>
        var colors=new Array();
        var count=colors.push("red","blue");
        alert(colors.toString()); //输出:red,blue
        alert(count);  //输出2
        count=colors.push("black");
        alert(count); //输出3
    </script>

    分析上面的代码发现,每次push完返回的都是最后一次push后数组的长度!

    2、pop()方法则从数组末尾移除最后一项,减少数组的length,返回移除的项。代码如下:

    <script>
        var colors=new Array();
        var count=colors.push("red","blue");
        var item=colors.pop();
        alert(item); //输出:blue
        alert(colors.length);//输出:1
    </script>

    二、队列方法

    通过Array类型的push()和pop()方法我们可以模拟栈的后进先出,从上面的代码可以看出,而队列数据结构的访问规则是FIFO(First-In-First-Out,先进先出)。队列在列表的末端添加项,在列表的前端移除项。由于push()是向数组末端添加项的方法,因此要模拟队列只需从数组前端取得项的方法。这个方法就是:

    1、shift()   移除数组中的第一项并返回该项,同时数组长度减1 代码如下:

    <script>
       //利用shift()和push()模拟队列  后面追加元素,前面移出元素
        var colors=new Array();
        var count=colors.push("red","blue");//推入两项
        alert(count); //输出:2
        count=colors.push("black");
        alert(count);  //输出:3
        var item=colors.shift();
        alert(item);//输出:red
        alert(colors.length);//输出:2
    </script>

    2、unshift()

    ECMAScript还为数组提供了一个unshift()方法,顾名思义,该方法与shift()方法刚好相反,他是从顶端添加项,unshift()和pop()方法搭配,可以从反方向来模拟队列。代码如下:

    <script>
        //利用unshift()和pop()方法模拟反向队列   前面追加元素,后面去除元素
        var colors=new Array("red","blue","green");
        var count=colors.unshift("blue");
        alert(count); //输出:4
        alert(colors.toString()); //输出:blue,red,blue,green  blue被追加到数组的最前端
        var item=colors.pop();
        alert(item); //输出:green    pop()方法将最后面一项green移出
        alert(colors.length); //输出:3
    </script>
  • 相关阅读:
    1、C# 数组是值类型还是引用类型,对数组有什么更深层次的理解?
    面试:TCP协议经典十五连问!
    看八股408数据结构中平衡树有感而发,直接手撸了10h Splay终于撸出来了
    关于个人感觉冷门的介值定理的记录
    对泰勒公式又有了新的认识
    mac配置java环境
    Kubernetes kubectl常用命令
    .ssh/config line 4: garbage at end of line; "Enterprise"
    maven修改项目版本号命令
    JenKins持续集成
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/5893608.html
Copyright © 2011-2022 走看看