栈和队列的问题

来源:互联网 发布:淘宝女童装品牌 编辑:程序博客网 时间:2024/06/06 20:54
  栈stack和队列queue: 其实都是普通数组。 
        栈: 一端封闭,只能从另一端进出的数组
   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)+"没抢上");


0 0
原创粉丝点击