1. /**
    2. * 像栈一样,队列(queue)也是表
    3. * 使用队列时插入在一端进行而删除在另一端进行,遵守先进先出的规则
    4. * 队列的基本操作是入队(enqueue):它是在表的末端(队尾(rear)插入一个元素。出队(dequeue):出队他是删除在表的开头(队头(front))的元素。
    5. */
    6. this.clear = clear; //清空当前队列
    7. class Queue {
    8. constructor() {
    9. /** 队列数据 */
    10. this.items = [];
    11. }
    12. /** 入队 */
    13. enqueue(element) {
    14. this.items.push(element);
    15. }
    16. /** 出队 */
    17. dequeue() {
    18. if (this.isEmpty) return "The Queue is empty";
    19. this.items.shift();
    20. }
    21. /** 查看队首元素 */
    22. get front() {
    23. if (this.isEmpty) return "The Queue is empty";
    24. return this.items[0];
    25. }
    26. /** 查看队尾元素 */
    27. get back() {
    28. if (this.isEmpty) return "The Queue is empty";
    29. return this.items[this.items.length - 1];
    30. }
    31. /** 显示队列所有元素 */
    32. get toString() {
    33. return this.items.join(",")
    34. }
    35. /** 判断当前队列是否为空 */
    36. get isEmpty() {
    37. return !this.items.length;
    38. }
    39. /** 清空当前队列 */
    40. clear() {
    41. this.items = []
    42. }
    43. }
    44. // 初始化一个队列
    45. var queue = new Queue();
    46. queue.enqueue(1);
    47. queue.enqueue(2);
    48. queue.dequeue();
    49. console.log(queue);
    50. console.log(queue.isEmpty);
    51. console.log(queue.toString);