// 二、封装队列类
/**
* 队列类的实现:
* 队列的实现和栈一样,有两种方案:
* - 基于数组实现;
* - 基于链表实现;
* 队列的常见操作:
* - enqueue(element):向队列尾部添加一个(或多个)新的项;
* - dequeue():移除队列的第一(即排在队列最前面的)项,并返回被移除的元素;
* - front():返回队列中的第一个元素——最先被添加,也将是最先被移除的元素。
* 队列不做任何变动(不移除元素,只返回元素信息与Stack类的peek方法非常类似);
* - isEmpty():如果队列中不包含任何元素,返回true,否则返回false;
* - size():返回队列包含的元素个数,与数组的length属性类似;
* - toString():将队列中的内容,转成字符串形式
*/
// 基于数组封装队列类
class Queue {
// 属性
constructor() {
this.items = []
}
// 方法
// 1.enQueue():将元素加入到队列中
enQueue(element) {
this.items.push(element)
}
// 2.deQueue():从队列中删除前端元素
deQueue() {
return this.items.shift()
}
// 3.front():查看前端的元素
frontQueue() {
return this.items[0]
}
// 4.isEmpty:查看队列是否为空
isEmpty() {
return this.items.length == 0 ? '队列为空' : '队列不为空'
}
// 5.size():查看队列中元素的个数
size() {
return this.items.length
}
// 6.toString():将队列中元素以字符串形式输出
toString() {
let resultString = ''
for (let i of this.items) {
resultString += i + ''
}
return resultString
}
}
module.exports = Queue
//测试
let Queue = require('./01队列的封装')
let queue = new Queue()
// 将元素加入到队列中
queue.enQueue('a')
queue.enQueue('b')
queue.enQueue('c')
queue.enQueue('d')
console.log(queue);
// 从队列中删除元素
queue.deQueue()
console.log(queue);
queue.deQueue()
console.log(queue);
//front
console.log(queue.frontQueue());
// 验证其他方法
console.log(queue.isEmpty());
console.log(queue.size());
console.log(queue.toString());
$ node 02队列的测试.js
Queue { items: [ 'a', 'b', 'c', 'd' ] }
Queue { items: [ 'b', 'c', 'd' ] }
Queue { items: [ 'c', 'd' ] }
c
队列不为空
2
cd