# 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

接着,在这个栈类中实现所需要的功能:

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

# 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