81 lines
1.8 KiB
Markdown
81 lines
1.8 KiB
Markdown
---
|
||
title: Create a Stack Class
|
||
localeTitle: 创建一个堆栈类
|
||
---
|
||
## 创建一个堆栈类
|
||
|
||
### 方法:
|
||
|
||
* Stack是一种抽象的数据结构。
|
||
* 堆栈遵循LIFO / FILO原则。
|
||
|
||
## \-在这个挑战,我们需要添加`.push()` `.pop()` `.peek()` `.isEmpty()`和`.clear()`方法的类。
|
||
|
||
* `push()`方法将值推送到堆栈。
|
||
* `pop()`方法弹出堆栈中的第一个值。
|
||
* `peek()`方法返回堆栈中的第一个值。
|
||
* `isEmpty()`方法检查堆栈是否为空。
|
||
|
||
## \- `.clear()`方法从堆栈中删除所有元素。
|
||
|
||
| DS |访问|搜索|插入|删除| | ----- | ------ | ------ | ------ | ------ | |堆栈| n | n | 1 | 1 |
|
||
|
||
### 解:
|
||
|
||
#### 基础:
|
||
|
||
```js
|
||
function Stack() {
|
||
var collection = [];
|
||
this.print = function() {
|
||
console.log(collection);
|
||
};
|
||
this.push = function(val){
|
||
return collection.push(val);
|
||
}
|
||
this.pop = function(){
|
||
return collection.pop();
|
||
}
|
||
this.peek = function(){
|
||
return collection[collection.length-1];
|
||
}
|
||
this.isEmpty = function(){
|
||
return collection.length === 0;
|
||
}
|
||
this.clear = function(){
|
||
collection.length = 0;
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 高级 - ES6类语法:
|
||
|
||
```js
|
||
class Stack {
|
||
constructor() {
|
||
this.collection = [];
|
||
}
|
||
print(){
|
||
console.log(this.collection);
|
||
}
|
||
push(val){
|
||
retiurn this.collection.push(val);
|
||
}
|
||
pop(){
|
||
return this.collection.pop();
|
||
}
|
||
peek(){
|
||
return this.collection[this.collection.length-1];
|
||
}
|
||
isEmpty(){
|
||
return this.collection.length === 0;
|
||
}
|
||
clear(){
|
||
return this.collection.length = 0;
|
||
}
|
||
}
|
||
```
|
||
|
||
###资源:
|
||
|
||
* [维基百科](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) |