日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JavaScript數據結構之雙向鏈表

瀏覽:219日期:2023-06-07 13:23:49

單向鏈表在遍歷時只能從頭到尾或者從尾遍歷到頭;所以單向鏈表可以輕松到達下一節點,但是回到上一個節點是很困難的

而雙向鏈表既可以從頭遍歷到尾, 又可以從尾遍歷到頭,鏈表的相聯是雙向的,一個節點既有向前連接的引用,也有向后連接的引用

但是正因如此,雙向鏈表在插入或者刪除某個節點時,需要處理四個節點的引用,并且所占用內存空間也更大一些

JavaScript數據結構之雙向鏈表

雙向鏈表實現

JavaScript 代碼實現雙向鏈表

// 創建雙向鏈表的構造函數function DoublyLinkedList() { // 創建節點構造函數 function Node(element) { this.element = element this.next = null this.prev = null // 新添加的 } // 定義屬性 this.length = 0 this.head = null this.tail = null // 新添加的 // 定義相關操作方法 // 在尾部追加數據 DoublyLinkedList.prototype.append = function (element) { // 1.根據元素創建節點 var newNode = new Node(element) // 2.判斷列表是否為空列表 if (this.head == null) { this.head = newNode this.tail = newNode } else { this.tail.next = newNode newNode.prev = this.tail this.tail = newNode } // 3.length+1 this.length++ } // 在任意位置插入數據 DoublyLinkedList.prototype.insert = function (position, element) { // 1.判斷越界的問題 if (position < 0 || position > this.length) return false // 2.創建新的節點 var newNode = new Node(element) // 3.判斷插入的位置 if (position === 0) { // 在第一個位置插入數據 // 判斷鏈表是否為空 if (this.head == null) { this.head = newNode this.tail = newNode } else { this.head.prev = newNode newNode.next = this.head this.head = newNode } } else if (position === this.length) { // 插入到最后的情況 // 思考: 這種情況是否需要判斷鏈表為空的情況呢? 答案是不需要, 為什么? this.tail.next = newNode newNode.prev = this.tail this.tail = newNode } else { // 在中間位置插入數據 // 定義屬性 var index = 0 var current = this.head var previous = null // 查找正確的位置 while (index++ < position) { previous = current current = current.next } // 交換節點的指向順序 newNode.next = current newNode.prev = previous current.prev = newNode previous.next = newNode } // 4.length+1 this.length++ return true } // 根據位置刪除對應的元素 DoublyLinkedList.prototype.removeAt = function (position) { // 1.判斷越界的問題 if (position < 0 || position >= this.length) return null // 2.判斷移除的位置 var current = this.head if (position === 0) { if (this.length == 1) { this.head = null this.tail = null } else { this.head = this.head.next this.head.prev = null } } else if (position === this.length -1) { current = this.tail this.tail = this.tail.prev this.tail.next = null } else { var index = 0 var previous = null while (index++ < position) { previous = current current = current.next } previous.next = current.next current.next.prev = previous } // 3.length-1 this.length-- return current.element } // 根據元素獲取在鏈表中的位置 DoublyLinkedList.prototype.indexOf = function (element) { // 1.定義變量保存信息 var current = this.head var index = 0 // 2.查找正確的信息 while (current) { if (current.element === element) { return index } index++ current = current.next } // 3.來到這個位置, 說明沒有找到, 則返回-1 return -1 } // 根據元素刪除 DoublyLinkedList.prototype.remove = function (element) { var index = this.indexOf(element) return this.removeAt(index) } // 判斷是否為空 DoublyLinkedList.prototype.isEmpty = function () { return this.length === 0 } // 獲取鏈表長度 DoublyLinkedList.prototype.size = function () { return this.length } // 獲取第一個元素 DoublyLinkedList.prototype.getHead = function () { return this.head.element } // 獲取最后一個元素 DoublyLinkedList.prototype.getTail = function () { return this.tail.element } // 遍歷方法的實現 // 正向遍歷的方法 DoublyLinkedList.prototype.forwardString = function () { var current = this.head var forwardStr = '' while (current) { forwardStr += ',' + current.element current = current.next } return forwardStr.slice(1) } // 反向遍歷的方法 DoublyLinkedList.prototype.reverseString = function () { var current = this.tail var reverseStr = '' while (current) { reverseStr += ',' + current.element current = current.prev } return reverseStr.slice(1) } // 實現toString方法 DoublyLinkedList.prototype.toString = function () { return this.forwardString() }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91成人福利| 国产精品日韩精品中文字幕| 一区二区三区午夜视频| 色爱av综合网| 精品成av人一区二区三区| 国产香蕉精品| 国产精品片aa在线观看| 国产精品1区在线| 久久av网站| 久久中文字幕一区二区三区| 国产精品nxnn| 九九久久国产| 国产一区二区三区免费在线| 色婷婷色综合| 亚洲成人国产| 日韩视频一区| 水蜜桃久久夜色精品一区的特点| 免费精品国产的网站免费观看| 午夜欧美巨大性欧美巨大| www成人在线视频| 久久青草久久| 自拍日韩欧美| 四虎国产精品免费久久| 欧美影院精品| 欧美激情麻豆| 91综合视频| 黄色不卡一区| 亚洲综合婷婷| 国产精品成人**免费视频| 精品欠久久久中文字幕加勒比| 精品一区不卡| 理论片午夜视频在线观看| 精品国产欧美日韩一区二区三区| 国产精品麻豆成人av电影艾秋| 麻豆国产欧美日韩综合精品二区| 色婷婷亚洲mv天堂mv在影片| 亚洲高清二区| 免费在线观看精品| 国产日韩在线观看视频| 国产美女高潮在线观看| 91久久视频| 日本免费一区二区视频| 精品久久电影| 伊人久久大香线蕉av不卡| 乱人伦精品视频在线观看| 欧美久久一区二区三区| 日韩中文在线电影| 欧美午夜不卡| 日本午夜精品视频在线观看| 日韩国产一区二区| 中文字幕av亚洲精品一部二部 | 日韩欧美视频专区| 亚洲欧洲另类| 国产精品2023| 夜夜嗨一区二区三区| 国产精品一区二区精品视频观看 | 亚洲精品一区二区妖精| 国产午夜久久av| 中文字幕在线高清| 一二三区精品| 日韩久久视频| 色狠狠一区二区三区| 国产va在线视频| 日本伊人午夜精品| 中文字幕人成乱码在线观看 | 亚洲日本三级| 国产伦久视频在线观看| 亚洲精品在线a| 青草国产精品| 久久婷婷丁香| 国产日本精品| 欧美日韩国产精品一区二区亚洲| 国产精品久久久久9999高清| 亚洲女同中文字幕| 久久99蜜桃| 亚洲一区成人| 日韩免费福利视频| 国产欧美高清| 久久成人亚洲| 久久尤物视频| 色婷婷成人网| 狠狠干成人综合网| а√在线中文在线新版| 亚洲精品四区| 久久精品成人| 久久精品女人| 日本伊人午夜精品| 性色一区二区| 99久久亚洲精品蜜臀| 麻豆国产91在线播放| 亚洲开心激情| 日韩视频一区二区三区在线播放免费观看| 荡女精品导航| 国产亚洲一区| 免费观看日韩电影| 欧美~级网站不卡| 欧美国产一级| 美腿丝袜亚洲一区| 人人爽香蕉精品| 欧美影院三区| 欧美精品高清| 国产91在线播放精品| 国产欧美一区二区色老头| 亚洲精品韩国| 久久亚洲欧美| 亚洲在线网站| 国产精品毛片| 在线国产一区二区| 欧美亚洲在线日韩| 色老板在线视频一区二区| 国产精品久久观看| 国产在线日韩精品| 精品视频一二| 国产精品v一区二区三区| 日产欧产美韩系列久久99| 先锋影音国产一区| 国产视频一区三区| 欧美.日韩.国产.一区.二区| 91精品国产乱码久久久久久久| 日韩伦理在线一区| 国产精品精品国产一区二区| 国内精品美女在线观看| 精品九九久久| 福利一区二区三区视频在线观看| 美女免费视频一区| 久久久91麻豆精品国产一区| 国产欧美自拍| 久久在线91| 另类欧美日韩国产在线| 国产中文字幕一区二区三区| zzzwww在线看片免费| 午夜欧美巨大性欧美巨大| 日韩在线观看| 欧美成人亚洲| 亚洲深爱激情| 日韩三级一区| 国产精品免费大片| 国语精品一区| 日韩欧美精品综合| 免费不卡中文字幕在线| 美女网站久久| 97久久中文字幕| 久久99久久久精品欧美| 国产欧美高清视频在线| 欧美黄色精品| 福利一区和二区| 久久亚洲国产| 99在线精品免费视频九九视| 日韩精品一卡二卡三卡四卡无卡| 天堂av在线一区| 青青草国产精品亚洲专区无| 国产精品亚洲成在人线| 国产aⅴ精品一区二区三区久久| 久久免费黄色| 老鸭窝亚洲一区二区三区| 日韩二区三区在线观看| 精品久久中文| 激情综合自拍| 老色鬼久久亚洲一区二区| 日韩精品免费一区二区夜夜嗨| 国产精品极品在线观看| av综合电影网站| 精品1区2区3区4区| 欧美中文高清| 国产欧洲在线| 在线亚洲国产精品网站| 天堂av一区| 久久精品国产网站| 欧美日韩国产免费观看| 日韩精品一级| 91综合网人人| 免播放器亚洲| 国产亚洲人成a在线v网站| 伊人久久视频| 91成人网在线观看| 日韩高清不卡一区二区| 天堂√中文最新版在线| 蜜桃视频免费观看一区| 美日韩一区二区三区| 伊人久久婷婷| 麻豆一区二区三| 黄色欧美日韩| 久久精品国产网站| 香蕉久久国产| 九九99久久精品在免费线bt| 亚洲国产一区二区在线观看| 国产乱码精品| 国产综合激情| 国产精品调教| 日韩精品看片| 日韩精品欧美成人高清一区二区| 蜜桃成人精品| 亚洲精品在线a| 久久免费国产| 国产精品免费大片| 亚洲深爱激情| 四虎8848精品成人免费网站| 鲁大师影院一区二区三区| 一区二区精品伦理...| 亚洲人www|