熟知Java的人都知道Java除了提供数组之外,还提供了List集合、Deque集合,其中List为线性表,Deque集合代表双向队列,既可充当栈,也可充当队列。JavaScript中的数组就很厉害了,是java中的数组、List集合和Deque集合的合成体。
一、JavaScript关于栈和队列的方法:
push(ele):元素入栈
pop():元素出栈
unshift(ele):元素入队列
shift():元素出队列
二、栈和队列的实例与原理解析
大家都知道栈中是先进后出的,队列是先进先出的,那就让我们一起验证一下吧。
<html>
<body>
<script type="text/javascript">
var a=[0,1,2];
console.log(a[0]+" "+a[1]+" "+a[2]);
a.push(3);
console.log(a[0]+" "+a[1]+" "+a[2]+" "+a[3]);
a.pop();
console.log(a[0]+" "+a[1]+" "+a[2]);
a.unshift(4);
console.log(a[0]+" "+a[1]+" "+a[2]+" "+a[3]);
a.shift();
console.log(a[0]+" "+a[1]+" "+a[2]);
</script>
</body>
</html>
实验结果:
由实验结果可知,奇怪的现象发生了,入栈后出栈和入队出队的最终结果居然是一样的。这也说明了JS中的栈和队列和JAVA中的并不完全相同。
在JS中,栈的原理和JAVA中的基本一致。从栈顶进入,从栈顶出栈。
但队列则有一些不同,JS中的入队大家可以想象成和现实里的插队一样,入队时从队首插入,出队时依然从队首出去。