freeCodeCamp/curriculum/challenges/chinese/08-coding-interview-prep/data-structures/create-a-stack-class.chines...

75 lines
3.9 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.

---
id: 587d8250367417b2b2512c5f
title: Create a Stack Class
challengeType: 1
videoUrl: ''
localeTitle: 创建一个堆栈类
---
## Description
<section id="description">在上一节中,我们讨论了堆栈是什么以及如何使用数组来表示堆栈。在本节中,我们将创建自己的堆栈类。虽然您可以使用数组来创建堆栈,但有时最好限制我们对堆栈的控制量。除了<code>push</code><code>pop</code>方法之外,堆栈还有其他有用的方法。让我们为我们的堆栈类添加一个<code>peek</code> <code>isEmpty</code><code>clear</code>方法。说明编写一个<code>push</code>方法,将元素推送到堆栈顶部,一个<code>pop</code>方法删除堆栈顶部的元素,一个<code>peek</code>堆栈中第一个元素的<code>peek</code>方法,一个<code>isEmpty</code>方法用于检查是否存在stack是空的是一个<code>clear</code>堆栈中所有元素的方法。通常堆栈没有这个,但我们添加了一个控制台记录集合的<code>print</code>助手方法。 </section>
## Instructions
<section id="instructions">
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: 你的<code>Stack</code>类应该有一个<code>push</code>方法。
testString: 'assert((function(){var test = new Stack(); return (typeof test.push === "function")}()), "Your <code>Stack</code> class should have a <code>push</code> method.");'
- text: 你的<code>Stack</code>类应该有一个<code>pop</code>方法。
testString: 'assert((function(){var test = new Stack(); return (typeof test.pop === "function")}()), "Your <code>Stack</code> class should have a <code>pop</code> method.");'
- text: 你的<code>Stack</code>类应该有一个<code>peek</code>方法。
testString: 'assert((function(){var test = new Stack(); return (typeof test.peek === "function")}()), "Your <code>Stack</code> class should have a <code>peek</code> method.");'
- text: 您的<code>Stack</code>类应该有一个<code>isEmpty</code>方法。
testString: 'assert((function(){var test = new Stack(); return (typeof test.isEmpty === "function")}()), "Your <code>Stack</code> class should have a <code>isEmpty</code> method.");'
- text: 你的<code>Stack</code>类应该有一个<code>clear</code>方法。
testString: 'assert((function(){var test = new Stack(); return (typeof test.clear === "function")}()), "Your <code>Stack</code> class should have a <code>clear</code> method.");'
- text: <code>peek</code>方法应该返回堆栈的顶部元素
testString: 'assert((function(){var test = new Stack(); test.push("CS50"); return (test.peek() === "CS50")}()), "The <code>peek</code> method should return the top element of the stack");'
- text: <code>pop</code>方法应该删除并返回堆栈的顶部元素
testString: 'assert((function(){var test = new Stack(); test.push("CS50"); return (test.pop() === "CS50");}()), "The <code>pop</code> method should remove and return the top element of the stack");'
- text: 如果堆栈不包含任何元素,则<code>isEmpty</code>方法应返回true
testString: 'assert((function(){var test = new Stack(); return test.isEmpty()}()), "The <code>isEmpty</code> method should return true if a stack does not contain any elements");'
- text: <code>clear</code>方法应该从堆栈中删除所有元素
testString: 'assert((function(){var test = new Stack(); test.push("CS50"); test.clear(); return (test.isEmpty())}()), "The <code>clear</code> method should remove all element from the stack");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function Stack() {
var collection = [];
this.print = function() {
console.log(collection);
};
// Only change code below this line
// Only change code above this line
}
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>