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

    队列 Queue

    概念

    队列是一种列表,但队列只能在队尾插入元,在队首删除元素。

    队列是一种先进先出的数据结构,用于存储按顺序排列的数据,被用在很多地方,比如提交操作系统执行的一系列进程、打印任务池等,一些仿真系统用队列来模拟银行或杂货店里排队的顾客。

    可以将队列想像成在银行前排队的人群,排在最前面的人第一个办理业务,新来的人只能在后面排队,直到轮到他们为止。

    对队列的操作

    • 向队列中插入新元素(入队):push( )
    • 删除队列中的元素(出队):pop( )
    • 读取队头的元素: peek( )

    用数组实现队列

    function Queue() {
        this.dataStore = [];
        this.enqueue = function(element){
            this.dataStore.push(element);
        }
        this.dequeue = function(){
            return this.dataStore.shift();
        }
        this.front = function(){
            return this.dataStore[0];
        }
        this.back = function(){
            return this.dataStore[this.dataStore.length - 1];
        }
        this.empty = function(){
            return this.dataStore.length === 0 ? true : false;
        }
        this.toString = function() {
            var str = '';
            for(var i = 0; i < this.dataStore.length; i ++){
                str += this.dataStore[i] + '\n';
            }
            return str;
        }
    

    使用队列

    队列不仅用于执行现实生活中与排队有关的操作,还可以用于对数据进行排序。

    思路:对于0~99的数字,技术排序将数据扫描两次,第一次按个位上的数字进行排序,第二次按十位上的数字进行排序。每个数字根据对应位上的数值被分在不同的盒子里(从0~9共10个盒子,用10个队列来表示)

    优先队列

    在一般情况下,从队列中删除的元素,一定是率先入队的元素。但是也有一些使用队列的应用,在删除元素时不必遵守先进先出的约定。这种应用,需要使用一个叫做优先队列的数据结构来进行模拟。

    从优先队列中删除元素是,需要考虑优先权的限制。比如医院急诊科的候诊室,当病人进入候诊室时,分诊护士会评估患者病情的严重程度,然后给一个优先级代码,高优先级的患者先于低优先级的患者就医,同样优先级的患者按照先来先服务的顺序就医。

    出队函数变化如下:

    function dequeue() {
        var entry = '';
        for(var i = 0; i < this.dataStore.length; i ++){
            if(this.dataStore[i].code < this.dataStore[entry].code){
               entry = i;
            }
        }
        return this.dataStore.slice(i,1);
    }
    

    双向队列

    Deque类:双向队列是一个和队列类似的数据结构,允许从队列两端添加和删除元素。

  • 相关阅读:
    字符匹配算法之KMP
    rabbitmq_hearbeat
    rabbitmq_config
    postgres SQL编译过程
    postgres启动过程分析
    postgres源码目录结构
    Js两种post方式(转)
    PHP-MySQL,PHP-MySQLi,PDO的差异
    CSS属性中Display与Visibility的不同
    PHP中include路径修改
  • 原文地址:https://www.cnblogs.com/clover77/p/9188072.html
Copyright © 2011-2022 走看看