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

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

JavaScript數據結構之雙向鏈表

瀏覽:226日期: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久久,三上悠亚国产精品一区二区三区
亚洲黄色网址| 日韩大片免费观看| 不卡福利视频| 国产成年精品| 国产欧美一区二区三区国产幕精品 | 日本欧美不卡| 国产va在线视频| 91视频久久| 97se综合| 91精品啪在线观看国产18| 亚洲性色视频| 女人天堂亚洲aⅴ在线观看| 欧美日韩国产一区精品一区| 最新亚洲激情| 在线国产精品一区| 石原莉奈在线亚洲三区| 亚洲理论在线| 亚洲精品国产精品粉嫩| 欧美亚洲色图校园春色| 国产精品欧美大片| 美女精品一区二区| 日韩欧美午夜| 狠狠爱成人网| 蜜桃久久av一区| 欧美久久亚洲| 福利一区视频| 欧美日韩在线网站| 麻豆久久精品| 国产欧美在线| 久久电影tv| 亚洲免费中文| 91亚洲精品在看在线观看高清| 一区二区电影| 精品高清久久| 免费久久精品| 日本在线成人| 成人在线视频区| 亚洲黄页一区| 国产欧美日本| 日韩和的一区二在线| 亚洲欧美日本国产专区一区| 日本午夜精品久久久久| 日韩中文在线电影| 麻豆亚洲精品| 国产激情欧美| 免费观看不卡av| 日韩高清二区| 中文一区一区三区高中清不卡免费| 亚洲电影在线一区二区三区| 中文不卡在线| 动漫av一区| 国产亚洲高清视频| 精品国产中文字幕第一页| 亚洲精品小说| 国产精品.xx视频.xxtv| 久久亚洲在线| 国产伦理久久久久久妇女| 久久久夜精品| 日韩国产精品久久久久久亚洲| 国产成人免费精品| 美女久久一区| sm捆绑调教国产免费网站在线观看| 在线一区视频| 久久伊人亚洲| 亚洲人成高清| 99久久99视频只有精品| 国产三级一区| 91九色精品| 久久精品日韩欧美| 蜜臀精品久久久久久蜜臀 | 国产成人免费av一区二区午夜| 免费视频久久| 在线看片国产福利你懂的| 日本不卡视频一二三区| 免费一二一二在线视频| 免费在线视频一区| 亚洲日本网址| 国产精久久久| 中文字幕一区二区精品区| 日韩高清不卡| 欧美国产日本| 亚洲人成亚洲精品| 影视先锋久久| 久久精品国产99国产| 亚洲欧美日本国产| 伊人久久亚洲美女图片| 亚洲最新无码中文字幕久久| 国产日产精品_国产精品毛片| 亚洲午夜电影| 久久伊人国产| 青青草国产成人99久久| 伊人久久亚洲热| 国产综合色区在线观看| 激情久久99| 国产欧美日韩一区二区三区在线| 亚洲欧美日韩国产| 久久一区二区三区电影| 久久久久久婷| 国产欧美高清视频在线| 亚洲我射av| 99成人在线| 激情久久久久久| 欧美日韩国产观看视频| 久久不见久久见国语| 亚洲三级精品| 日本大胆欧美人术艺术动态| 亚洲福利精品| 亚洲天堂黄色| 少妇久久久久| 日韩欧美一区二区三区免费看| 久久亚洲精品中文字幕| 日韩国产一区二| 婷婷精品在线| 中文字幕一区二区三区日韩精品 | 高清av一区| 欧美激情99| 日韩1区2区日韩1区2区| 丝袜美腿亚洲一区| 久久av在线| 亚洲激情国产| 国产精品普通话对白| 蜜桃视频欧美| 宅男噜噜噜66国产日韩在线观看| 午夜久久免费观看| 免费黄色成人| 丝袜美腿亚洲一区二区图片| 久久午夜视频| 视频精品一区二区| 亚洲精品九九| 日韩国产欧美在线视频| 91精品在线免费视频| 日韩制服丝袜av| 在线精品福利| 亚洲tv在线| 日韩不卡在线观看日韩不卡视频| 婷婷精品在线观看| 欧美影院精品| 你懂的亚洲视频| 国产伦久视频在线观看| 亚洲黄色中文字幕| 91高清一区| 亚洲影视一区| 日本午夜精品| 精品女同一区二区三区在线观看| 久久精品国产福利| 日韩精品2区| 精品亚洲美女网站| 激情综合网站| 蜜桃av一区二区三区电影| 91精品国产自产观看在线| 久久99精品久久久久久园产越南| 国产一区二区三区亚洲综合| 日韩欧美字幕| 首页亚洲欧美制服丝腿| 少妇精品久久久一区二区| 日韩精品欧美精品| 国产精品日本一区二区三区在线 | 日韩精彩视频在线观看| 国产亚洲一区二区三区不卡| 欧美精品不卡| а√在线中文在线新版| 在线日韩中文| 亚洲精品第一| 欧美激情一区| 欧美va亚洲va日韩∨a综合色| 亚洲午夜免费| 久久av影视| 伊人久久大香线蕉av不卡| 石原莉奈在线亚洲二区| 国产日韩视频| 91tv亚洲精品香蕉国产一区| 91成人精品| 久久国产三级精品| 日韩在线视频精品| 日韩在线视频一区二区三区| 精品日韩在线| 六月天综合网| 国产成人精品免费视| 国产精品婷婷| 久久精品一本| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品地址| 久久久久国产| 日本精品一区二区三区在线观看视频| 粉嫩av一区二区三区四区五区 | 日韩欧美一区二区三区免费观看| 亚洲一区区二区| 久久麻豆视频| 欧美专区18| 日本久久综合| 蜜桃视频在线观看一区| 国产一区二区三区探花| 蜜桃av一区二区| 日韩一区二区三区免费| 日韩一区二区三区高清在线观看| 新版的欧美在线视频| 日韩高清一区| 九色porny丨国产首页在线| 久久国产视频网| 婷婷亚洲五月色综合|