• Javascript与数据结构系列(二)——队列的实现


    队列实现

    使用数组来实现队列看起来顺理成章。JavaScript 中的数组具有其他编程语言中没有的优点, 数组的 push() 方法可以在数组末尾加入元素,shift() 方法则可删除数组的第一个元素。

    push() 方法将它的参数插入数组中第一个开放的位置,该位置总在数组的末尾,即使是个 空数组也是如此。请看下面的例子:

    names = [];

    name.push("Cynthia"); names.push("Jennifer"); print(names); // 显示 Cynthia,Jennifer

    然后使用 shift() 方法删除数组的第一个元素:

    names.shift();

    准备开始实现 Queue 类,先从构造函数开始:

    function Queue() {

        this.dataStore = [];

        this.enqueue = enqueue;

        this.dequeue = dequeue;

        this.front = front;

        this.back = back;

        this.toString = toString;

        this.empty = empty;

    }

    enqueue() 方法向队尾添加一个元素:

    function enqueue(element) {

        this.dataStore.push(element);

    }

    dequeue() 方法删除队首的元素:

    function dequeue() {

        return this.dataStore.shift();

    }

    可以使用如下方法读取队首和队尾的元素:

    function front() {

        return this.dataStore[0];

    }

    function back() {

        return this.dataStore[this.dataStore.length-1];

    }

    还需要 toString() 方法显示队列内的所有元素:

     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;

        } 

    }

    代码归纳

    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() {

      return this.dataStore.shift();

    }

    function front() {

      return this.dataStore[0];

    }

    function back() {

      return this.dataStore[this.dataStore.length - 1];

    }

    转自: https://segmentfault.com/a/1190000004921006

    作者: Vagor

  • 相关阅读:
    自动跳转至首页(Java Script)
    简单的轮播图(Java Script)
    蓝桥杯 2016年 第七届 四平方和(JAVA)
    蓝桥杯 2016年 第七届 剪邮票(JAVA)
    蓝桥杯 2015年 第六届 生命之树(JAVA)
    蓝桥杯 2015年 第六届 垒骰子(JAVA)
    numpy笔记
    opencv安装和运行
    vs code环境配置注意点
    numpy中matrix使用方法
  • 原文地址:https://www.cnblogs.com/-ding/p/6029805.html
Copyright © 2020-2023  润新知