forked from sunbigshan/learnAlgorithm
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStackBasedOnArray.js
More file actions
71 lines (68 loc) · 1.5 KB
/
StackBasedOnArray.js
File metadata and controls
71 lines (68 loc) · 1.5 KB
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
* 基于数组实现栈
*/
let Stack = (function() {
// items 为栈的私有变量,禁止外部访问
const items = new WeakMap();
class Stack {
constructor() {
items.set(this, []);
}
// 入栈
push(item) {
let s = items.get(this);
s.push(item);
}
// 出栈
pop() {
if(this.isEmpty()) {
return null;
}
let s = items.get(this);
let r = s.pop();
return r;
}
// 查看栈顶
peek() {
if(this.isEmpty()) {
return null;
}
let s = items.get(this);
return s[s.length - 1];
}
// 检查栈是否为空
isEmpty() {
let s = items.get(this);
return s.length === 0;
}
// 返回栈的长度
size() {
let s = items.get(this);
return s.length;
}
// 打印栈
display() {
let s = items.get(this);
console.log(s);
}
// 情况栈
clear() {
items.set(this, []);
}
}
return Stack;
}());
var stack = new Stack();
stack.push(5);
stack.push(4);
stack.push(3);
stack.push(2);
stack.push(1);
console.log(stack.peek())
console.log(stack.size())
console.log(stack.pop())
console.log(stack.size())
stack.clear();
console.log(stack.peek())
console.log(stack.pop())
module.exports = Stack;