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

  • 相关阅读:
    sql server数据库中char,varchar,nvarchar字段的区别
    在Notepad++中为Python配置编译环境
    react-navigation笔记
    React Native之语法规范
    Node.js学习笔记
    Java与C#对照笔记
    iOS常用配置注意事项
    React Native之RNRF框架源码解析
    React Native之Redux相关
    keytool常用方法
  • 原文地址:https://www.cnblogs.com/-ding/p/6029805.html
Copyright © 2011-2022 走看看