javascript数据结构与算法笔记(二):普通队列
一:简介
队列是遵循FIFO( First In First Out, 先进先出,也称为先来先服务)原则的一组有序的项。
队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。
二:ES6版Queue类
1.使用WeakMap类声明Queue类
具体原因可以参照:https://blog.csdn.net/wushichao0325/article/details/84969725
let Queue=(function(){
const items=new WeakMap();
class Queue{
constructor(){
items.set(this,[]);
}
}
return Queue;
})();
2.向队列添加元素
enqueue(element){
let q=items.get(this);
q.push(element);
}
3.从队列移除元素
dequeue(){
let q=items.get(this);
let r=q.shift();
return r;
}
4.查看队列头元素
front(){//查看队列头元素
let q=items.get(this);
return q[0];
}
5.检查队列是否为空
isEmpty,如果队列为空的话将返回true,否则就返回false:
isEmpty(){
let q=items.get(this);
return q.length==0;
}
size(){
let q=items.get(this);
return q.length;
}
6.打印队列元素
print(){
let q=items.get(this);
console.log(q.toString())
}
7.使用队列
let queue=new Queue();
console.log(queue.isEmpty());
queue.enqueue('1');
queue.enqueue('2');
queue.print();
console.log(queue.size());
console.log(queue.isEmpty());
queue.dequeue();
queue.dequeue();
queue.print();