小结栈方法,队列方法

        按照自学进度,目前看到了《javascript高级程序》的第五章引用类型。我们知道编程的核心就是由数据结构及算法组成的。而这一章里讲到了非常有用的栈方法及队列方法。我想小结一下。

        数组可以表现得像栈一样,可以限制插入和删除项的一种数据结构。栈是一种后进先出的数据结构,也就是最新添加的项最早被移除。而栈中项的插入(叫做推入)和移除(叫做弹出)只发生在一个位置——栈的顶部。ECMAscript为数组专门提供了push()和pop()方法,以便实现类似栈的行为。

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

        pop()方法则从数组末尾移除最后一项减少数组的length值,然后返回移除的项。看例子:   

<span style="font-size:18px;">var colors=new Array();  //创建一个数组
var count=colors.push("red","green");  //推入两项
alert(count);       //2

count=colors.push("black");    //推入另一项
alert(count);      //3

var item=colors.pop();         //取得最后一项
alert(item);        //"black"
alert(colors.length);   //2</span>
       以上代码中的数组可以看成是栈(代码本身没有任何区别,而push()和pop()都是数组默认的方法)。首先,我们使用push()将两个字符串推入数组的末尾,并将返回的结果保存在变量count中(值为2)。然后再推入一个值,而结果仍然保存在count中。因为此时数组中包含3项,所以push()返回3,在调用pop()时,它会返回数组的最后一项,即字符串"black"。此后,数组中仅剩两项。

<span style="font-size:18px;"> var colors={"red","blue"};
 colors.push("brown"); //添加另一项
 colors[3]="black";    //添加一项
 alert(colors.length);      //4
    
var item=colors.pop(); //取得最后一项
alert(item);   //"black"</span>

            再来说说队列数据结构的访问规则是先进先出。队列在列表的末端添加项,从列表的前端移除项。由于push()是向数组末端添加项的方法,因此要模拟队列只需一个从数组前端取得项的方法。实现这一操作的数组方法就是shift(),它能够解除数组中的第一个项并返回该项,同时将数组长度减1.结合使用shift()和push()方法,可以使用 shift()和push()方法,可以像使用队列一样使用数组。

<span style="font-size:18px;">var colors=new Array();      //创建一个数组
var count=colors.push("red","green");    //推入两项
alert(count);  //2

count=colors.push("black");      //推入另一项
alert(count);    //3

var item=colors.shift();     //取得第一项
alert(item);            //"red"
alert(colors.length);   //2</span>
      ECMAScript还为数组提供了一个unshift()方法。unshift()与shift()方法的用途相反:它能在数组前端添加任意个项并返回新数组的长度。因此,同时使用unshift()和pop()方法,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组的末端移除项。    

<span style="font-size:18px;">var colors=new Array();    //创建一个数组
var count=colors.unshift("red","green");    //推入两项
alert(count);   //2

count=colors.unshift("black");  //推入另一项
alert(count);   //3

var item=colors.pop();
alert(item);   //"green"        //取得最后一项
alert(colors.length);   //2</span>
     总结: push()和pop()方法,实现类似栈的行为(后进先出),而队列的行为可以用两种搭配来实现。(1)用shift()和push()方法来实现队列的行为(先进先出),从末端进从前端出。(2)用unshift()和pop()方法,可以从相反的方向来模拟队列,即从前端进,从末端出。    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值