# 1. 前言
栈,是一种遵从后进先出(LIFO, Later-In-First-Out)原则的有序集合。新添加的元素都保存在栈的一端,称作栈顶,另一端叫做栈底。在栈中,新元素都靠近栈顶,旧元素都靠近栈底。
# 2. 功能说明
- push(value): 添加一个新元素到栈顶
- pop(): 移除栈顶的元素,同时返回该元素
- peek(): 获取栈顶的元素
- isEmpty(): 判断栈是否为空。是返回 true, 否返回 fallse
- clear(): 清空栈里的元素
- size(): 获取栈里元素的个数
# 3. 代码实现
首先,先创建一个类表示栈,并且初始化一个空数组,用来保存栈里的元素
class Stack {
constructor() {
this.items = [];
}
}
1
2
3
4
5
2
3
4
5
接着,在这个栈类中实现所需要的功能:
class Stack {
constructor() {
this.items = [];
}
push(value) {
this.items.push(value);
}
pop() {
return this.items.pop();
}
peek() {
return this.items[this.items.length - 1];
}
isEmpty() {
return this.items.length === 0;
}
clear() {
return (this.items = []);
}
size() {
return this.items.length;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 4. 测试
var stack = new Stack();
stack.push(5);
stack.push(6);
stack.push(7);
console.log(stack.pop());
console.log(stack.peek());
console.log(stack.isEmpty());
console.log(stack.size());
console.log(stack.clear());
console.log(stack.size());
console.log(stack);
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
← 08.错误处理 02.原生JS实现队结构 →