JavaScript的栈方法和队列方法

一,栈方法

    ECMAScript 数组提供了一种让数组的行为类似于其他数据结构的方法。

    栈是一种LIFO(Last-In-First-Out,即后进先出)的数据结构,也就是最新添加的项最早被移除。而栈中的项的插入和移除,只能发生在栈顶。ECMAScript为数组提供了push()和pop()方法,用以实现类似栈的行为。

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

    pop()方法没有入参,它是从数组末尾移除最后一项,并返回最后移除的项,同时,减少数组的length值。

    

    示例:

    //创建一个数组
    var colors = new Array();
    var count = colors.push("red","green");//推入两项
    alert(count);//弹出push推入的返回值   2
    alert(colors.length);//弹出数组colors的length值    2


    count = colors.push("black");//再推入一项
    alert(count);//弹出push推入的返回值   3
    alert(colors.length);//弹出数组colors的length值    3


    //使用pop方法获取数组的最后一项的值
    var last_item = colors.pop();
    alert(last_item);//   "black"


    alert(count);//这个时候的count还是3
    alert(colors.length);//数组colors的length值为2

    ECMAScript可以将栈方法和数组其他方法连用。

    示例:

    //创建一个数组
    var colors = ["red","blue"];
    colors.push("brown");//向数组的末尾推入一项
    alert(colors.length);//这个时候数组的length值为3
    colors[3] = "black";//将数组的角标为3的位置即数组中第四项设置为“black”
    alert(colors.length);//这个时候数组的length值为4


    var item= colors.pop();//取得数组最后一项的值
    alert(item);//“black”
    alert(colors.length);//这个时候数组的length值为3

二,队列方法

    栈数据结构的访问规则是LIFO,而队列数据结构的访问规则是FIFO(First-In-First-Out,即先进先出)。队列在列表的末端添加项,从列表的前端移除项。

    ECMAScript提供了push()和shift()方法来控制队列的的行为;

    push()方法是向列表的末尾添加项(与栈的push方法一样);shift()方法是从列表的最前端移除一项,并返回移除项,同时列表的length减1。

    示例:

    //创建一个数组
    var colors = new Array();
    var count = colors.push("red","green");
    alert(count);//弹出数组push返回的值   2
    alert(colors.length);//弹出数组的length值   2


    count = colors.push("black");//向数组末尾再推入一项
    alert(count);//这个时候push返回的值为3
    alert(colors.length);//这个时候数组的length值为3


    var first_item = colors.shift();//取得数组的最前端的值
    alert(first_item);//"red"  数组的第一项值变为"green"
    alert(colors.length);//这个时候数组的length值为2

    ECMAScript还提供了一个unshift()方法;顾名思义,unshift()与shift()的用途相反;unshift()能够从数组的前端添加任意个项并返回新数组的长度。因此,同时使用unshift()和pop()方法,可以从相反的方向来模拟队列。即数组的前度添加项,从数组的末端移除项。

    示例:

    //创建一个数组

    var colors = new Array();

    var count = colors.unshift("red","green");//从数组的最前端推入两项

    alert(count);//返回数组推入的两项的值 2


    count = colors.unshift("black");//再向数组的最前端推入一项

    alert(count);//这时数组推入项返回的值为3


    var last_item = colors.pop();//取得输入最后一项的值

    alert(last_item);//"green"

    alert(colors.length);//这个时候数组的length值为2


    var first_item = colors.shift();//取得数组最前端的值

    alert(first_item);//"black"

    alert(colors.length);//这时数组的length值为1


    

转载于:https://my.oschina.net/shenzhenjava/blog/653552

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值