03.创建堆栈类

  • Post author:
  • Post category:其他



说明

在最后一节中,我们讨论了堆栈是什么,以及如何使用数组来表示堆栈。在本节中,我们将创建自己的堆栈类。

尽管可以使用数组来创建堆栈,但有时最好限制我们使用堆栈的控制量。

除了


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
}


答案

参考:


JS 创建自定义对象的方法


JavaScript清空数组的三种方法


方法

说明

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群和微信群寻找帮助也没有结果,毕竟里面大都是学员!


收费课程平台发展的短板就是售前很亲切售后不存在!!!


所以网课平台的好坏除了教学质量更重要的是售后能否及时解决用户遇到的问题!



版权声明:本文为weixin_44790207原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。