队列是一种 先进先出(FIFO,First In First Out)的数据结构。
基于数组创建队列
/*** enqueue 尾部入队* dequeue 头部出队.返回出队的元素* peek 返回队列中第一个元素,不改变队列* size 队列中元素的个数* isEmpty 是否为空*/class Queue {constructor() {this.items = [];}enqueue(element) {this.items.push(element);}dequeue() {return this.items.shift();}peek() {return this.items[0];}size(){return this.items.length;}isEmpty(){return this.items.length === 0;}}
双端队列
双端队列(deque,double-ended queue)是一种允许同时在前端和后端添加和删除元素的特殊队列。
双端队列在现实生活中的例子有电影院、餐厅中排队的队伍等。举个例子,一个刚买了票的人如果只是还需要再问一些简单的信息,就可以直接回到队伍的头部。另外,在队伍末尾的人如果赶时间,他可以直接离开队伍。
/*** addFront 头部入队* removeFront 头部出队,返回出队的元素* addBack 尾部入队* removeBack 尾部出队,返回出队的元素* front 返回头部元素,不改变队列* back 返回尾部元素,不改变队列* size 返回队列元素的个数* isEmpty 判断队列是否为空*/class Queue {constructor() {this.items = [];}addFront(element) {this.items.unshift(element);}removeFront() {return this.items.shift();}addBack(element) {this.items.push(element);}removeBack() {return this.items.pop();}front() {return this.items[0];}back() {return this.items[this.items.length - 1];}size(){return this.items.length;}isEmpty(){return this.items.length === 0;}}
