麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

JavaScript中實現鍵值對應的字典與哈希表結構的示例

2019-11-20 09:43:34
字體:
來源:轉載
供稿:網友

字典(Dictionary)的javascript實現
編程思路:

  • 使用了裸對象datastore來進行元素存儲;
  • 實現了兩種得到字典長度的方法,一種為變量跟蹤,一種為實時計算。

代碼:

function(){  "use strict";  function Dictionary(){    this._size = 0;    this.datastore = Object.create(null);  }  Dictionary.prototype.isEmpty = function(){    return this._size === 0;  };  Dictionary.prototype.size = function(){    return this._size;  };  Dictionary.prototype.clear = function(){    for(var key in this.datastore){      delete this.datastore[key];    }    this._size = 0;  };  Dictionary.prototype.add = function(key, value){    this.datastore[key] = value;    this._size++;  };  Dictionary.prototype.find = function(key){    return this.datastore[key];  };  Dictionary.prototype.count = function(){    var n = 0;    for(var key in this.datastore){      n++;    }    return n;  };  Dictionary.prototype.remove = function(key){    delete this.datastore[key];    this._size--;  };  Dictionary.prototype.showAll = function(){    for(var key in this.datastore){      console.log(key + "->" + this.datastore[key]);    }  };  module.exports = Dictionary;})();

散列(hashtable)的javascript實現
編程思路:

  • 以鏈表來解決實現開鏈法來解決碰撞,并使用自己寫的單鏈表庫LinkedList(詳見jb51之前的//www.companysz.com/article/86394.htm);
  • 用裸對象來存儲;
  • ValuePair簡單封裝鍵值對;
  • 以模塊模式組織代碼;

代碼:

valuePair.js

(function(){  "use strict";  function ValuePair(key, value){    this.key = key;    this.value = value;  }  ValuePair.prototype.toString = function(){    return "[" + this.key + ":" + this.value + "]";  };  module.exports = ValuePair;})();

hashtable.js

(function(){  "use strict";  var ValuePair = require("./lib/ValuePair");  var LinkedList = require("./LinkedList");  function Hashtable(){    this.table = Object.create(null);    this._size = 0;  }  Hashtable.prototype.isEmpty = function(){    return this._size === 0;  };  Hashtable.prototype.size = function(){    return this._size;  };  Hashtable.prototype.remove = function(key){    var index = hashCode(key);    if(this.table[index] == null){      return false;    }else{      var currNode = this.table[index].getHead();      while(currNode.next){        currNode = currNode.next;        if(currNode.element.key == key){          this.table[index].remove(currNode.element);          this._size--;          return true;        }      }      return false;    }  };  Hashtable.prototype.get = function(key){    var index = hashCode(key);    if(this.table[index] == null){      return null;    }else{      var currNode = this.table[index].getHead();      while(currNode.next){        currNode = currNode.next;        if(currNode.element.key == key){          return currNode.element;        }      }      return null;    }  };  Hashtable.prototype.put = function(key, value){    var index = hashCode(key);    if(this.table[index] == null){      this.table[index] = new LinkedList();    }    var currNode = this.table[index].getHead();    while(currNode.next){            //key若已經存在,修改value值為新值      currNode = currNode.next;      if(currNode.element.key == key){        currNode.element.value = value;        break;      }    }    if(currNode.next == null && currNode.element.value != value){         //key不存在,加入新值.注意邊界值      this.table[index].add(new ValuePair(key,value));      this._size++;    }    return this;  };  Hashtable.prototype.display = function(){    for(var key in this.table){      var currNode = this.table[key].getHead();      while(currNode.next){        currNode = currNode.next;        console.log(currNode.element.toString());      }    }  };  /*********************** Utility Functions ********************************/  function hashCode(key) {        //霍納算法,質數取37    var hashValue = 6011;    for (var i = 0; i < key.length; i++) {      hashValue = hashValue * 37 + key.charCodeAt(i);    }    return hashValue % 1019;  }  module.exports = Hashtable;})();

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久免费观看一级毛片 | 成年免费视频黄网站在线观看 | 久久色在线 | 国产成年人小视频 | 97青青草视频| 国产寡妇xxxxxxxx性开放 | 亚洲无马在线观看 | 九九热免费视频在线观看 | 成人在线视频在线观看 | 日本特级a一片免费观看 | 黄色特级片黄色特级片 | 免费人成在线播放 | 一本色道久久综合亚洲精品图片 | 国产精品久久久不卡 | 国产成人精品日本亚洲语音 | 黄色片在线免费播放 | 久久99国产伦子精品免费 | 91aa.app| 欧美日韩成人一区二区 | 黄色大片在线免费观看 | 久久久久亚洲美女啪啪 | 羞羞羞网站 | 精品国产一区二区三区免费 | 看全色黄大色黄大片女图片 | 久久久久久免费免费 | 欧美a级一区二区 | 日本人乱人乱亲乱色视频观看 | a黄在线观看 | 全免费午夜一级毛片真人 | 欧洲a级片 | 亚洲视频欧美 | 一级在线观看视频 | 成人综合一区二区 | aa级黄色片| 国产精品99爱 | 免费毛片电影 | chinese xvideos gay| 欧美成人影院 | 精品99在线视频 | 国产午夜精品视频免费不卡69堂 | 夜夜夜精品视频 |