【数据结构--之队列】 用js实现队列功能

197 阅读1分钟

队列 是先进先出的原则 队列在尾部添加新元素 在头部去除元素

队列的基本运算

(1)初始化队列:Init_Queue(q) ,初始条件:队q 不存在。操作结果:构造了一个空队;

(2)入队操作: In_Queue(q,x),初始条件: 队q 存在。操作结果: 对已存在的队列q,插入一个元素x 到队尾,队发生变化;

(3)出队操作: Out_Queue(q,x),初始条件: 队q 存在且非空,操作结果: 删除队首元素,并返回其值,队发生变化;

(4)读队头元素:Front_Queue(q,x),初始条件: 队q 存在且非空,操作结果: 读队头元素,并返回其值,队不变;

(5)判队空操作:Empty_Queue(q),初始条件: 队q 存在,操作结果: 若q 为空队则返回为1,否则返回为0。

同样的用class 类声明一个队列

 class Queue{
        // 创造一个空数组
        constructor(item){
            this.item = item || []
        }
        // 入队
        inQueue(el){
            this.item.push(el)
        }
        // 出队
        get outQueue(){
            return this.item.shift()
        }
        // 返回队列顶端元素
        get frontQueue(){
            return this.item[0]
        }
        // 是否为空 空返回true 反之false
        get emptyQueue(){
            return !this.item.length
        }
        // 移除队里的所有元素
        get cleaQueuer(){
            this.item = []
        }
        // 返回队里的元素个数
        get sizeQueue(){
            return this.item.length
        }
    }

使用:

let QueueLast = new Queue
     console.log(QueueLast.emptyQueue);    
     QueueLast.inQueue('john')
     QueueLast.inQueue('lisa')
     QueueLast.inQueue('enen')
    QueueLast.outQueue
    console.log(QueueLast.emptyQueue);    
     console.log(QueueLast.sizeQueue);    
    console.log(QueueLast.frontQueue); 
    console.log(JSON.stringify(QueueLast))
    QueueLast.cleaQueuer
    console.log(JSON.stringify(QueueLast))
    console.log(QueueLast.frontQueue); 

优先列队 和 循环列队 待续。。。。