JavaScript 栈、队列

       阅读(96)  2019-03-27 14:13:43

Stack

栈,后进先出

class Stack {
    constructor() {
        this.list = []
    }

    pop() {
        const t = this.top()
        this.list.pop()
        return t
    }

    push(...item) {
        this.list.push(...item)
    }

    top() {
        return this.isEmpty() ? undefined : this.list[this.size() - 1]
    }

    size() {
        return this.list.length
    }

    isEmpty() {
        return this.list.length === 0
    }
}

Queue

队列,先进先出

class Queue {
    constructor() {
        this.list = []
    }

    dequeue() {
        const t = this.head()
        this.list.shift()
        return t
    }

    enqueue(...item) {
        this.list.push(...item)
    }

    head() {
        return this.isEmpty() ? undefined : this.list[0]
    }

    size() {
        return this.list.length
    }

    isEmpty() {
        return this.list.length === 0
    }
}

String拼接

考虑下面的方法

str = '';
for (/* each piece */) {
  str += piece; // bad for performance!
}
return str;

此方法将导致过多的中间字符串和连接操作,并且整体执行效果不佳

解决上面问题的方法是使用join

var tmp = [];
for (/* each piece */) {
  tmp.push(piece);
}
str = tmp.join(''); // Specified an empty separator, thanks Jonathan
return str;

此方法不会受到额外字符串对象的影响,并且通常执行得更快。

文章评论

Keep it simple,stupid
文章数
283
总访问量
260345
今日访问
675
最近评论

ningto : 请到next.ningto.com里发表评论。
tujiaw : 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞 : 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
于淞 : 你好,这个文章的源码能分享一下吗,838106303@163.com,谢谢了 上面的链接不能用了
tujiaw : 多谢多谢
essaypinglun college-paper.org : 很好的博客,赞赞
Folly : 这个实现有点奇怪,Qt为什么没有统一的比对方法。
过多s : alert("hello, world!")
tujiaw : 还不错哦
回到顶部