主要用两种方式进行了实现:基于对象和基于数组
基于对象的stack类
class Stack {
constructor() {
this.count = 0;
this.items = {};
}
//方法
push(element) {
this.items[this.count] = element; //注意这个写法
this.count++;
}
pop() {
if (this.isEmpty()) {
return undefined;
}
this.count--;
const result = this.items[this.count];
delete this.items[this.count];
return result;
}
peek() {
if (this.isEmpty()) {
return undefined;
}
return this.items[this.count - 1];
}
clear() {
this.items = {};
this.count = 0;
}
size() {
return this.count;
}
isEmpty() {
return this.count === 0;
}
toString() {
if (this.isEmpty()) {
return "";
}
let objString = `${this.items[0]}`;
for (let i = 1; i < this.count; i++) {
objString = `${objString},${this.items[i]}`;
}
return objString;
}
}
基于数组的stack类
//使用数组的方法
class Stack2 {
constructor() {
this.items = [];
}
push(element) {
this.items.push(element);
}
pop() {
return this.items.pop();
}
peek() {
return this.items[this.items.length - 1];
}
isEmpty() {
return this.items.length === 0;
}
size() {
return this.items.length;
}
clear() {
this.items = [];
}
}
一般来说直接用数组实现的比较多,显然它比较方便。