(三)学习数据结构与算法——队列

回顾知识,才能继续深入!

队列也是一种重要的数据结构,看起来比较简单,这里做个笔记,方便自己之后回顾~

  • 队列的特点:先进先出
  • 实例:生活中排队的例子
  • 实现方法:

1)创建队列

function Queue(){
    let items=[];//存放元素
}

2)队列的方法:

增:enqueue(element(s)),向队列尾部添加一个或多个元素

删:dequeue(),移除队列的第一个元素,并返回被移除的值

查:front(),返回第一个元素

        isEmpty(),查看队列是否为空

        size(),返回队列包含的元素个数

3)具体实现方法:

enqueue(element(s)),向队列中添加元素

this.enqueue=function(element){
    items.push(element);//添加元素
}

dequeue(),向队列中移除元素

this.dequeue=function(){
    return items.shift();//移除第一个元素
}

front(),查看队列头元素

this.front=function(){
    return items[0];//查看第一个元素
}

isEmpty(),查看队列是否为空

this.isEmpty=function(){
    return items.length==0;
}

size(),查看队列的元素个数

this.size=function(){
    return items.length;
}

打印队列元素

this.print=function(){
    console.log(items.toString());
}

完整代码和测试: 

    function Queue(){
        let items=[];
        this.enqueue=function(element){
            items.push(element);
        };
        this.dequeue=function(){
            return items.shift();
        };
        this.front=function(){
            return items[0];
        };
        this.isEmpty=function(){
            return items.length==0;
        };
        this.size=function(){
            return items.length;
        };
        this.print=function(){
            console.log(items.toString());
        }
    }
    let queue=new Queue();
    console.log(queue.isEmpty());
    queue.enqueue("John");
    queue.enqueue("Jack");
    queue.print();
    console.log(queue.size());
    console.log(queue.isEmpty());
    queue.dequeue();
    queue.print();

4)队列的修改

  • 优先队列

通过设置优先级:

 function PriorityQueue(){
        let items=[];
        function QueueElement(element,priority){
            this.element=element;
            this.priority=priority;
        }
        this.enqueue=function(element,priority){
            let queueElement=new QueueElement(element,priority);
            //注意这added的控制
            let added=false;
            for(let i=0;i
  • 循环队列

例子:击鼓传花

    function hotPotato(nameList,num){
        let queue=new Queue();
        for(let i=0;i1){
            for(let i=0;i

以上例子均来自《学习javascript数据结构与算法》书籍

真的很佩服本书的作者!!!

你可能感兴趣的:((三)学习数据结构与算法——队列)