- 栈
栈是一种遵从** 先进后出 (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
原著是一个有趣的人,若有侵权,请通知删除
还没有人抢沙发呢~