Files
2018-10-16 21:32:40 +05:30

81 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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))