zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    vue 使用 <iframe> 嵌入网页 地址实现动态配置
    vue 视频播放 vue-video-player
    vue 实现自定义序号, 并且翻页序号累加。
    关于 vue 使用 Handsontable 表格数据导出
    node.js Stream流的使用
    手把手教如何搭建node+egg项目 引入Sequelize
    实现 通过数据库里一个字段值相等 则把 他合为一条数据
    最近在项目中碰到把对象数组转为键值对,
    js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip
    for循环
  • 原文地址:https://www.cnblogs.com/-ding/p/6029805.html
Copyright © 2011-2022 走看看