说明
在最后一节中,我们讨论了堆栈是什么,以及如何使用数组来表示堆栈。在本节中,我们将创建自己的堆栈类。
尽管可以使用数组来创建堆栈,但有时最好限制我们使用堆栈的控制量。
除了
push
和
pop
方法之外,堆栈还有其他有用的方法。我们给我们的
stack
类添加一个
peek
,
isEmpty
和
clear
方法。
练习
编写一个将元素推送到堆栈顶部的
push
方法,一种删除堆栈顶部元素的
pop
方法,一个查看堆栈中第一个元素的
peek
方法,一个检查堆栈是否为空的
isEmpty
方法,以及一个从堆栈中删除所有元素的
clear
方法。
通常堆栈没有这个,但是我们添加了一个
print
帮助器方法,控制台记录集合。
-
你的
Stack
类应该有一个
push
方法。 -
你的
Stack
类应该有一个
pop
方法。 -
你的
Stack
类应该有一个
peek
方法。 -
你的
Stack
类应该有一个
isEmpty
方法。 -
你的
Stack
类应该有一个
clear
方法。 -
peek
方法应该返回堆栈的顶部元素 -
pop
方法应该删除并返回堆栈的顶部元素 -
如果堆栈不包含任何元素,则
isEmpty
方法应返回
true
-
clear
方法应该从堆栈中删除所有元素
function Stack() {
collection = [];
this.print = function() {
console.log(collection);
};
// Only change code below this line
// Only change code above this line
}
答案
参考:
方法 |
说明 |
function() |
是一个可以被其他代码或其自身调用的代码片段,或者是一个指向该函数的变量 。 |
this |
当前执行代码的环境对象 |
() => |
箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。 |
console.log() |
用于在控制台输出信息(浏览器按下 F12 打开控制台)。 |
push() |
向数组的末尾添加一个或多个元素,并返回新的长度。 |
pop() |
删除数组的最后一个元素并返回删除的元素。 |
slice() |
从已有的数组中返回选定的元素。 |
length |
可设置或返回数组中元素的数目。 |
[ ] |
数组对象的作用是:使用单独的变量名来存储一系列的值。 |
var |
声明一个变量,并可选地将其初始化为一个值。 |
new |
创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。 |
\n |
换行符 |
function Stack() {
collection = [];
this.print = () => collection;
// Only change code below this line
this.push = element => collection.push(element);
this.pop = () => collection.pop();
this.peek = () => collection[collection.length - 1];
this.isEmpty = () => collection.length === 0;
this.clear = () => collection = [];
// Only change code above this line
}
var arr = new Stack();
arr.print();
arr.push("IBM") + '\n' + arr.print();
arr.peek();
arr.pop();
arr.isEmpty();
arr.clear();
arr.isEmpty();
下面是没通过的代码
没有通过的原因是返回值是控制台打印结果,而不是正确的返回数据
function Stack(collection,element) {
this.print = () => console.log(collection);
// Only change code below this line
this.push = element => console.log(collection.push(element));
this.pop = () => console.log(collection.pop());
this.peek = () => console.log(collection.slice(-1)); //返回的是数组,应该返回元素
this.isEmpty = () => console.log(collection.length === 0);
this.clear = () => console.log(collection = []);
// Only change code above this line
}
var arr = new Stack(["Saab", "Volvo", "BMW"]);
arr.print();
arr.push("IBM") + '\n' + arr.print();
arr.peek();
arr.pop();
arr.isEmpty();
arr.clear();
arr.isEmpty();
// function Stack(collection,element) {
// this.print = () => collection;
// this.push = element => collection.push(element);
// this.pop = () => collection.pop();
// this.peek = () => collection.slice(-1);
// this.isEmpty = () => collection.length === 0;
// this.clear = () => collection = [];
// }
运行结果
体会
开始一直不知道运行没有通过的原因。问了W3Cshcool的客服,很久了都没有回应!
在售后QQ群和微信群寻找帮助也没有结果,毕竟里面大都是学员!
收费课程平台发展的短板就是售前很亲切售后不存在!!!
所以网课平台的好坏除了教学质量更重要的是售后能否及时解决用户遇到的问题!