栈和队列属于线性结构,他们之间值的取出操作有区别

先进后出

栈

用数组来模拟:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function stack(arr = []) {
this.value = arr.slice();
}
stack.prototype = {
add: function (item) {
this.value.push(item);
},
pop: function () {
return this.value.pop();
},
};

const s = new stack([1, 2, 3]);
s.add(4); // [1, 2, 3, 4]
s.pop(); // 4 -> [1, 2, 3]

队列

先进先出

队列

用数组来模拟:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function queues(arr = []) {
this.value = arr.slice();
}
queues.prototype = {
add: function (item) {
this.value.push(item);
},
pop: function () {
return this.value.shift();
},
};

const q = new queues([1, 2, 3]);
q.add(4); // [1, 2, 3, 4]
q.pop(); // 1 -> [2, 3, 4]