栈stack和队列queue: 其实都是普通数组。
栈: 一端封闭,只能从另一端进出的数组
FILO
何时使用: 只要希望总是使用最新的数据时
如何使用:
1. 结尾出入栈:
入栈: arr.push(新值);向数组末尾追加新元素
出栈: var last=arr.pop();
从数组末尾弹出最后一个元素
优点: 每次出入栈操作,不响应其余元素位置
2. 开头出入栈:
入栈: arr.unshift(新值);
在数组开头插入新元素
出栈: var first=arr.shift();
从数组开头位置弹出第一个元素
缺点: 每次出入栈,剩余元素的位置,都会变化
队列: 只能从一端进入,从另一端出 的数组
FIFO
何时使用: 必须按照先来后到的顺序使用数组元素
如何使用:
从结尾入队列:arr.push(新值)
栈: 一端封闭,只能从另一端进出的数组
FILO
何时使用: 只要希望总是使用最新的数据时
如何使用:
1. 结尾出入栈:
入栈: arr.push(新值);向数组末尾追加新元素
出栈: var last=arr.pop();
从数组末尾弹出最后一个元素
优点: 每次出入栈操作,不响应其余元素位置
2. 开头出入栈:
入栈: arr.unshift(新值);
在数组开头插入新元素
出栈: var first=arr.shift();
从数组开头位置弹出第一个元素
缺点: 每次出入栈,剩余元素的位置,都会变化
队列: 只能从一端进入,从另一端出 的数组
FIFO
何时使用: 必须按照先来后到的顺序使用数组元素
如何使用:
从结尾入队列:arr.push(新值)
从开头出队列:var first=arr.shift();
eg:
栈
var bus=[];
for(var i=1;i<=5;i++){
bus.push("乘客"+i);
alert("乘客"+i+" 上车");
console.log(String(bus));
}
while(bus.length>0){
var last=bus.pop();
alert(last+" 下车");
console.log(String(bus));
}
/*队列*/
var 肾s=5;
var queue=[];
for(var i=1;i<=5;i++){
queue.push("顾客"+i);
alert("顾客"+i+" 进入队列");
console.log(String(queue));
}
queue.push("你");
while(6s>0){
var first=queue.shift();
alert(first+"抢购成功");
6s--;
alert("剩余"+6s+"部");
console.log(String(queue));
}
console.log(String(queue)+"没抢上");