zoukankan      html  css  js  c++  java
  • javascript数据结构之队列

      首先什么是队列?

      排队买东西就是生活中队列的实际例子,在队伍中大家必须按照顺序来,不能插队,新来的人只能排在队伍的最后面。新加入的人相当于队列的后端加入的元素,队伍最前面买完东西的人离开队伍相当于是队列的前端元素的删除。其他的一些操作就不一一列举了,大家可以自行想象类比。

      其实队列是和栈很类似,区别在于栈是先入后出(FILO)的数据结构,只能操作栈顶的元素,而队列是先入先出(FIFO)的数据结构,可以同时操作队列的前端和后端。队列只能在前端删除元素,在后端插入元素,相当于是一个受限的线性表,只能在前后端来对元素进行操作,不能够像线性表一样对中间的任意元素进行插入和删除操作,所以队列实际上可以看作是一种特殊的线性表。

      既然要用javascript来实现队队列的模拟,那么先列举出需要用到的js数据结构以及对应的方法。

      还是用js中的数组来存储队列中的元素,js中队数组的主要操作有如下方法: 

    • pop() 删除数组末端的元素,返回这个元素

    • push(a) 将元素a压入数组末端,返回数组的长度

    • shift() 删除数组开端的元素,返回这个元素

    • unshift(a) 在数组的开端添加新的元素a,返回数组的长度

    • slice(a,b) 返回原数组位置从[a,b)的值构成的所有项

    • splice(a,b,args) 从数组的a位置开始删除b个元素,然后再a位置插入系数args

    • concat(args) 在数组的末端加上参数args

     我们将实现的队列的方法有如下几种:

    • enqueue() 入队

    • dequeue () 出队

    • front () 返回队头

    • isEmpty() 队列是否为空

    • clear() 清空队列

    • size() 返回这个队列的长度

    • print() 打印队列所有元素

    下面是js实现:

    /*
    *  数据结构:队列  
    */
    
    function Queue(){
    
        var array = [];
    
        this.enqueue = function(data){   //入队操作
            array.push(data);
        }
    
        this.dequeue = function(){      //出队
            return array.shift();
        }
    
        this.front = function(){   //返回对头
            return array[0];
        }
    
        this.isEmpty = function(){  // 判断队列是否为空
            if(array.length == 0){
                return true;
            }
            return false;
        }
    
        this.clear = function(){   //清除队列
            array = [];
        }
    
        this.size = function(){  //返回队列的长度
            return array.length;
        }
    
        this.print = function(){   //打印队列的所有元素
            console.log(array.toString());
        }
    
    }
    
    //下面实例化了一个队列对象queue,进行验证。
    
    var queue = new Queue();
    queue.enqueue("xianghuang");  //先入队三个元素
    queue.enqueue("xiaobai");
    queue.enqueue("xiaohua");
    queue.print();//查看此时的队列中的元素
    queue.dequeue(); // 出队一个元素
    queue.print();  //看看此时的队列中的元素
    console.log(queue.front()); //查看此时的队头
    console.log(queue.isEmpty());//看看此时是否为空
    console.log(queue.size()); //查看队列的长度
    queue.clear();  //清空队列元素

    下面是在chrome的console内的验证,没有错误。

  • 相关阅读:
    是否需要有代码规范
    结对同伴作业复审
    个人作业-四则运算生成
    个人博客-week7
    个人博客作业Week3
    结对编程项目总结
    个人项目总结
    个人博客作业Week2
    第二次结对作业
    个人作业3——个人总结(Alpha阶段)
  • 原文地址:https://www.cnblogs.com/jeavenwong/p/7349134.html
Copyright © 2011-2022 走看看