队列是一种特殊的线性表,特点是先进先出,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
——百度百科
了解了队列结构的特点,我们来实现它:
class Queue{
constructor(){
this.items = new Array();
}
//1.enqueue() 向队列尾部添加一个元素
enqueue(el) {
this.items.push(el)
}
//2.dequeue() 移除队列的第一个元素,并返回被移除的元素
dequeue(el) {
return this.items.shift()
}
//3.front() 查看队列中的第一个元素
front(){
return this.items[0]
}
//4.isEmpty() 查看队列是否为空 空返回true
isEmpty(){
return this.items.length === 0
}
//5.size() 返回队列的元素个数
size(){
return this.items.length
}
//6.toString() 将队列中的内容转换为字符串并返回
toString(){
let res = new String();
for (let i = 0; i < this.items.length; i++) {
res = res + this.items[i] + " "
}
return res
}
}
队列的基本运算已经写完了,接下来我们来测试一下:
let q = new Queue();
for (let i = 0; i < 5; i++) {
q.enqueue(i)
}
console.log(q.dequeue())
console.log(q.front())
console.log(q.isEmpty())
console.log(q.size())
console.log(q.toString())
0
1
false
4
1 2 3 4
控制台依次打印的信息如上,完全正确。
以上,队列的实现~