最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript 雙向鏈表操作實例分析【創(chuàng)建、增加、查找、刪除等】

 更新時間:2020年04月28日 11:00:09   作者:xiaoping  
這篇文章主要介紹了JavaScript 雙向鏈表操作,結(jié)合實例形式分析了JavaScript雙向鏈表的創(chuàng)建、增加、查找、刪除等相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了JavaScript 雙向鏈表操作。分享給大家供大家參考,具體如下:

一個 雙向鏈表(doubly linked list) 是由一組稱為節(jié)點的順序鏈接記錄組成的鏈接數(shù)據(jù)結(jié)構(gòu)。每個節(jié)點包含兩個字段,稱為鏈接,它們是對節(jié)點序列中上一個節(jié)點和下一個節(jié)點的引用

開始節(jié)點和結(jié)束節(jié)點的上一個鏈接和下一個鏈接分別指向某種終止節(jié)點,通常是前哨節(jié)點或null,以方便遍歷列表。如果只有一個前哨節(jié)點,則列表通過前哨節(jié)點循環(huán)鏈接。它可以被概念化為兩個由相同數(shù)據(jù)項組成的單鏈表,但順序相反。

class DNode {
 constructor(val) {
  this.val = val;
  this.prev = null;
  this.next = null;
 }
}

增加節(jié)點

function add(el) {
  var currNode = this.head;
  while (currNode.next != null) {
    currNode = currNode.next;
  }
  var newNode = new DNode(el);
  newNode.next = currNode.next;
  currNode.next = newNode;
}

查找

function find(el) {
  var currNode = this.head;
  while (currNode && currNode.el != el) {
    currNode = currNode.next;
  }
  return currNode;
}

插入

function (newEl, oldEl) {
  var newNode = new DNode(newEl);
  var currNode = this.find(oldEl);
  if (currNode) {
    newNode.next = currNode.next;
    newNode.prev = currNode;
    currNode.next = newNode;
  } else {
    throw new Error('未找到指定要插入節(jié)點位置對應(yīng)的值!')
  }
}

展示

// 順序
function () {
  var currNode = this.head.next;
  while (currNode) {
    console.log(currNode.el);
    currNode = currNode.next;
  }
}

// 逆序
function () {
  var currNode = this.head;
  currNode = this.findLast();
  while (currNode.prev != null) {
    console(currNode.el);
    currNode = currNode.prev;
  }
}

刪除

function (el) {
  var currNode = this.find(el);
  if (currNode && currNode.next != null) {
    currNode.prev.next = currNode.next;
    currNode.next.prev = currNode.prev;
    currNode.next = null;
    currNode.previous = null;
  } else {
    throw new Error('找不到要刪除對應(yīng)的節(jié)點');
  }
}

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運(yùn)行效果。

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

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

相關(guān)文章

  • JS中正則表達(dá)式要注意lastIndex屬性

    JS中正則表達(dá)式要注意lastIndex屬性

    這篇文章主要介紹了JS中正則表達(dá)式要注意lastIndex屬性,需要的朋友可以參考下
    2017-08-08
  • 原生微信小程序開發(fā)中 redux 的使用詳解

    原生微信小程序開發(fā)中 redux 的使用詳解

    這篇文章主要介紹了原生微信小程序開發(fā)中 redux 的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • javascript中l(wèi)ayim之查找好友查找群組

    javascript中l(wèi)ayim之查找好友查找群組

    這篇文章主要介紹了javascript中l(wèi)ayim之查找好友查找群組,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Javascript 對象(object)合并操作實例分析

    Javascript 對象(object)合并操作實例分析

    這篇文章主要介紹了Javascript 對象(object)合并操作,結(jié)合實例形式分析了javascript基于jQuery的extend方法、對象屬性、遍歷賦值等操作實現(xiàn)對象合并相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下
    2019-07-07
  • JS數(shù)據(jù)結(jié)構(gòu)與算法中的隊列結(jié)構(gòu)詳解

    JS數(shù)據(jù)結(jié)構(gòu)與算法中的隊列結(jié)構(gòu)詳解

    隊列指的是一種受限的線性表,先進(jìn)先出,今天通過本文帶領(lǐng)大家認(rèn)識隊列及隊列的應(yīng)用,對JS數(shù)據(jù)結(jié)構(gòu)與算法-隊列結(jié)構(gòu)相關(guān)知識感興趣的朋友一起看看吧
    2022-11-11
  • javascript開發(fā)實現(xiàn)貪吃蛇游戲

    javascript開發(fā)實現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了javascript開發(fā)實現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 詳解javascript傳統(tǒng)方法實現(xiàn)異步校驗

    詳解javascript傳統(tǒng)方法實現(xiàn)異步校驗

    這篇文章主要為大家介紹了javascript實現(xiàn)異步校驗的方法,感興趣的小伙伴們可以參考一下
    2016-01-01
  • TypeScript 中如何限制對象鍵名的取值范圍

    TypeScript 中如何限制對象鍵名的取值范圍

    TypeScript由微軟開發(fā)的自由和開源的編程語言,是一種給 JavaScript 添加特性的語言擴(kuò)展,接下來通過本文給大家介紹TypeScript 中如何限制對象鍵名的取值范圍,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • JavaScript中數(shù)組常見操作技巧

    JavaScript中數(shù)組常見操作技巧

    下面介紹JavaScript中的數(shù)組對象遍歷、讀寫、排序等操作以及與數(shù)組相關(guān)的字符串處理操作,需要的的朋友參考下吧
    2017-09-09
  • Javascript的各種節(jié)點操作實例演示代碼

    Javascript的各種節(jié)點操作實例演示代碼

    實例演示對javascript的節(jié)點的各種操作。包括hasChildNodes(),removeChild(),appendChild(),replaceChild(),insertBefore(),cloneNode()等
    2012-06-06

最新評論

西乌珠穆沁旗| 洛宁县| 金川县| 霍林郭勒市| 丹棱县| 罗定市| 怀宁县| 邹平县| 泾川县| 化隆| 乌什县| 桐城市| 根河市| 旺苍县| 山阴县| 汝州市| 古丈县| 汤原县| 武宣县| 东台市| 阳江市| 柳州市| 海口市| 西吉县| 同心县| 四会市| 扎兰屯市| 蒙自县| 西峡县| 马龙县| 宁都县| 深水埗区| 湄潭县| 旺苍县| 阿城市| 修水县| 二手房| 通化市| 崇文区| 那坡县| 遵义市|