/**
* 队列是一种列表, 不同的是队列只能在队尾插入元素, 在队首删除元素。
* 队列用于存储按顺序排列的数据, 先进先出, 这点和栈不一样, 在栈中, 最后入栈的元素反而被优先处理。
* 可以将队列想象成在银行前排队的人群, 排在最前面的人第一个办理业务, 新来的人只能在后面排队,直到轮到他们为止。
* 队列是一种先进先出(First-In-First-Out,FIFO)的数据结构。
* 队列被用在很多地方, 比如提交操作系统执行的一系列进程、 打印任务池等, 一些仿真系统用队列来模拟银行或杂货店里排队的顾客。
*/
class Queue {
constructor() {
this.dataStore = [];
}
// 队尾添加一个元素
enqueue(element) {
this.dataStore.push(element);
}
// 删除队首的元素
dequeue() {
return this.dataStore.shift();
}
// 获取队首的元素
front() {
return this.dataStore[0];
}
// 获取队尾的元素
back() {
return this.dataStore[this.dataStore.length - 1]
}
// 显示队列内所有的元素
toString() {
return this.dataStore.join('\n');
}
// 判断队列是否为空
empty() {
return !!this.dataStore.length()
}
}
//测试程序
// var q = new Queue();
// q.enqueue("Meredith");
// q.enqueue("Cynthia");
// q.enqueue("Jennifer");
// console.log(q.toString());
// q.dequeue();
// console.log(q.toString());
// console.log("Front of queue: " + q.front());
// console.log("Back of queue: " + q.back());
// 使用队列结构进行基数排序