js数组实现队列和栈

1.Array栈方法

栈是一种LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除。栈中项的插入(push)和移除,只发生在一个位置——栈的顶部。ECMAScript为数组提供了push()和pop()方法,可以实现类似栈的行为。下面两图分别演示了入栈与出栈操作。

这里写图片描述

这里写图片描述

push()方法可以接收任意数据的参数,把它们逐个添加到数组末尾,并返回修改后的数组长度。pop()方法从数组末尾移除最后一项,减少数组的length值
eg:

var students = [];
students.push("tom","leo","david","jack");//入栈4项
console.log(students.length);   //4
console.log(students[0]);     //"tom",第一项在栈的底部
console.log(students[1]);     //"leo"
students.push("jerry");
console.log(students.length);   //5
var item = students.pop(); //"jerry"
console.log(students.length);   //4

2.Array队列方法

栈数据结构的访问规则是LIFO(后进先出),而队列数据结构的访问规则是FIFO(First-In-First-Out,先进先出)。队列在列表的末端添加项,从列表的前端移除项。push()方法是向数组末端添加项的方法,因此要模拟队列只需一个从数组前端取得项的方法——shift(),其能够移除数组中的第一个项并返回该项,同时数组的length-1。结合使用shift()和push()方法,可以像使用队列一样使用数组。
这里写图片描述

这里写图片描述

方法一:

var students = [];
students.push("tom","leo","david","jack");//入队4项
console.log(students);//"tom","leo","david","jack"
console.log(students.length);   //4
console.log(students[0]);     //"tom",第一项在栈的底部
console.log(students[1]);     //"leo"
students.push("jerry");
console.log(students.length);   //5
//students=["tom","leo","david","jack","jerry"];
var item = students.shift();  //"tom"
console.log(students.length);   //4
//students=["leo","david","jack","jerry"];

方法二:
unshift()方法,它能在数组前端添加任意个项并返回新数组的长度。因此,结合使用unshift()和pop()方法,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项

var a=new Array();
a.unshift(1);
a.unshift(2);
console.log("先进先出")
a.pop()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值