zoukankan      html  css  js  c++  java
  • 数据结构与算法JavaScript描述——队列

    注:澄清一个bug:
    /**
    *    删除队首的元素:
    */
    function dequeue(){
        return this.dataStore.shift();
    }

    应该有return;

     
    队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。
    队列用于存储按顺序排列的数据,先进先出,这点和栈不一样,在栈中,最后入栈的元素反而被优先处理。
    可以将队列想象成在银行前排队的人群,排在最前面的人第一个办理业务,新来的人只能在后面排队,直到轮到他们为止。
     
    队列是一种先进先出的数据结构。
    队列被用在很多地方,比如提交操作系统执行的一系列进程、打印任务池等,一些仿真系统用队列来模拟银行或杂货
    店里排队的顾客。
     
    1.对队列的操作                                              
    队列的两种主要操作是:向队列中插入新元素和删除队列中的元素。
    插入操作也叫做入队,删除操作也叫做出队。
    入队操作在队尾插入新元素,出队操作删除队头的元素。
    队列的另外一项重要操作是读取队头的元素。这个操作叫做peek()。
    该操作返回队头元素,但不把它从队列中删除。
    除了读取队头元素,我们还想知道队列中存储了多少元素,可以使用length 属性满足该需求;
    要想清空队列中的所有元素,可以使用clear() 方法来实现。
     
    2.用数组实现的队列                                              
    JavaScript 中的数组具有其他编程语言中没有的优点,数组的push() 方法可以在数组末尾加入元素,shift() 方法则可删除数组的第一个元素。
     
    代码:
    <script type="text/javascript">
    function Queue(){
        this.dataStore = [];
        this.enqueue = enqueue;
        this.dequeue = dequeue;
        this.front = front;
        this.back = back;
        this.toString = toString;
        this.empty = empty;
    }
    
    /**
    *    向队尾添加一个元素
    */
    function enqueue(element){
        this.dataStore.push(element);
    }
    
    /**
    *    删除队首的元素:
    */
    function dequeue(){
        this.dataStore.shift();
    }
    
    /**
    *    读取队首的元素:
    */
    function front(){
        return this.dataStore[0];
    }
    
    /**
    *    读取队尾的元素:
    */
    function back(){
        return this.dataStore[this.dataStore.length - 1];
    }
    
    /**
    *    显示队列内的所有元素
    */
    function toString(){
        var retStr = "";
        for (var i = 0; i < this.dataStore.length; ++i) {
            retStr += this.dataStore[i] + "
    ";
        }
        return retStr;
    }
    
    /**
    *    判断队列是否为空
    */
    function empty(){
        if(this.dataStore.length == 0){
            return true;
        }else{
            return false;
        }
    }
    
    //测试代码
    var q = new Queue();
    q.enqueue("Meredith");    
    q.enqueue("Cynthia");
    q.enqueue("Jennifer");
    console.log(q.toString());
    q.dequeue();
    console.log(q.toString());
    console.log("Front of queue: " + q.front());
    console.log("Back of queue: " + q.back());
    
    
    
    </script>
    View Code

    打印:

     
  • 相关阅读:
    博客园风格简单修饰(Do It Yourself)
    十大经典排序算法
    物流BOS
    算法设计
    牛客网刷题
    关于上网的问题
    Lucene&Solr
    SSM综合练习
    四十八:WAF绕过-权限控制之代码混淆及行为造轮子
    四十七:WAF绕过-漏洞发现之代理池指纹被动探针
  • 原文地址:https://www.cnblogs.com/tenWood/p/7215421.html
Copyright © 2011-2022 走看看