封装队列类

// 二、封装队列类
/**
 * 队列类的实现:
 * 队列的实现和栈一样,有两种方案:
 * - 基于数组实现;
 * - 基于链表实现;
 * 队列的常见操作:
 * - 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
posted @ 2022-06-27 21:42  NaziriteGTC  阅读(50)  评论(0)    收藏  举报