国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JS雙向鏈表實現(xiàn)與使用方法示例(增加一個previous屬性實現(xiàn))

2019-11-19 12:11:10
字體:
供稿:網(wǎng)友

本文實例講述了JS雙向鏈表實現(xiàn)與使用方法。分享給大家供大家參考,具體如下:

前面一篇講述了《JS基于對象的鏈表實現(xiàn)與使用方法》,這里的雙向鏈表通過增加一個previous屬性實現(xiàn)。

單鏈表中若需要查找某一個元素時,必須從第一個元素開始進行查找,而雙向鏈表除開頭節(jié)點和最后一個節(jié)點外每個節(jié)點中儲存有兩個指針,這連個指針分別指向前一個節(jié)點的地址和后一個節(jié)點的地址,這樣無論通過那個節(jié)點都能夠?qū)ふ业狡渌墓?jié)點。

原理如下圖所示:

示例代碼:

/*雙向鏈表* */function Node(element) {  this.element = element;  this.next = null;  this.previous = null;//雙向鏈表在這里需要增加一個previous屬性}function LList() {  this.head = new Node("head");  this.find = find;  this.insert = insert;  this.display = display;  this.remove = remove;  this.findLast = findLast;  this.dispReverse = dispReverse;//將鏈表反轉(zhuǎn)}function dispReverse() {  var currNode = this.head;  currNode = this.findLast();  var nodestr = "";  while (!(currNode.previous == null)) {    nodestr += " "+currNode.element;    currNode = currNode.previous;  }  console.log("將鏈表反轉(zhuǎn)后: "+nodestr);}function findLast() {  var currNode = this.head;  while (!(currNode.next == null)) {    currNode = currNode.next;  }  return currNode;}function remove(item) {  var currNode = this.find(item);  if (!(currNode.next == null)) {    currNode.previous.next = currNode.next;    currNode.next.previous = currNode.previous;    currNode.next = null;    currNode.previous = null;  }}// findPrevious is no longer needed/*function findPrevious(item) { var currNode = this.head; while (!(currNode.next == null) && (currNode.next.element != item)) { currNode = currNode.next; } return currNode; }*/function display() {  var currNode = this.head;  var nodestr = "";  while (!(currNode.next == null)) {    nodestr += " "+currNode.next.element;    currNode = currNode.next;  }  console.log(nodestr);}function find(item) {  var currNode = this.head;  while (currNode.element != item) {    currNode = currNode.next;  }  return currNode;}function insert(newElement, item) {  var newNode = new Node(newElement);  var current = this.find(item);  newNode.next = current.next;  newNode.previous = current;//雙向鏈表在這里需要設(shè)置新節(jié)點previous屬性  current.next = newNode;}var cities = new LList();cities.insert("Conway", "head");cities.insert("Russellville", "Conway");cities.insert("Carlisle", "Russellville");cities.insert("Alma", "Carlisle");cities.display();//Conway Russellville Carlisle Almacities.remove("Carlisle");cities.display();//Conway Russellville Almacities.dispReverse();// Alma Russellville Conway

這里使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼,可得如下運行結(jié)果:

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 盘锦市| 安化县| 富宁县| 赤水市| 扎鲁特旗| 原平市| 台东县| 兴义市| 阜新| 林州市| 蓝山县| 青神县| 资兴市| 谷城县| 区。| 礼泉县| 彭山县| 绥棱县| 镇巴县| 尉氏县| 东城区| 兴海县| 蕲春县| 铜山县| 石景山区| 昌邑市| 永昌县| 拜城县| 鄂尔多斯市| 凤台县| 石棉县| 马龙县| 水城县| 顺义区| 浪卡子县| 和政县| 连州市| 隆德县| 饶阳县| 七台河市| 肥城市|