时间: 2020-09-9|28次围观|0 条评论


  • 栈是一种遵从** 先进后出 (LIFO) **原则的有序集合;新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
class Stack {    constructor() {        this.items = []    }    // 入栈    push(element) {         this.items.push(element)    }    // 出栈    pop() {        return this.items.pop()    }    // 末位    get peek() {        return this.items[this.items.length - 1]    }    // 是否为空栈    get isEmpty() {        return !this.items.length    }    // 尺寸    get size() {        return this.items.length    }    // 清空栈    clear() {        this.items = []    }    // 打印栈数据    print() {        console.log(this.items.toString())    }}- 使用栈类:// 实例化一个栈const stack = new Stack()console.log(stack.isEmpty) // true// 添加元素stack.push(5)stack.push(8)// 读取属性再添加console.log(stack.peek) // 8stack.push(11)console.log(stack.size) // 3console.log(stack.isEmpty) // false

  • 队列
    与栈相反,队列是一种遵循先进先出 (FIFO / First In First Out) 原则的一组有序的项;队列在尾部添加新元素,并从头部移除元素。最新添加的元素必须排在队列的末尾。
class Queue {    constructor(items) {        this.items = items || []    }    enqueue(element){        this.items.push(element)    }    dequeue(){        return this.items.shift()    }    front(){        return this.items[0]    }    clear(){        this.items = []    }    get size(){        return this.items.length    }    get isEmpty(){        return !this.items.length    }    print() {        console.log(this.items.toString())    }}- 使用队列类:const queue = new Queue()console.log(queue.isEmpty) // truequeue.enqueue('John')queue.enqueue('Jack')queue.enqueue('Camila')console.log(queue.size) // 3console.log(queue.isEmpty) // falsequeue.dequeue()queue.dequeue()queue.print() // 'Camila'
  • 优先队列
    元素的添加和移除是基于优先级的。实现一个优先队列,有两种选项:
    • 设置优先级,然后在正确的位置添加元素;
    • 或者用入列操作添加元素,然后按照优先级移除它们。

-----未完待续

文章转载于:https://www.jianshu.com/p/a9fbbb867e90

原著是一个有趣的人,若有侵权,请通知删除

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《一、数据结构分类
   

还没有人抢沙发呢~