freeCodeCamp/guide/chinese/certifications/coding-interview-prep/data-structures/create-a-stack-class/index.md

81 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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