新聞中心
這里有您想知道的互聯(lián)網營銷解決方案
如何用JavaScript實現功能齊全的單鏈表詳解-創(chuàng)新互聯(lián)
前言
前端也要搞好數據結構哦!
用JavaScript實現了個單鏈表,通過LinkedList構造函數可實例化一個單鏈表數據結構的對象,所有的方法放到LinkedList構造函數的原型對象上,寫了暫時能想到的所有方法
GitHub源碼地址,下載可運行
實現
- 通過LinkedList的類創(chuàng)建鏈表實例,鏈表下有添加,查找,刪除,顯示節(jié)點等方法
- 鏈表初始默認有一個"_head"頭部節(jié)點,使用時隱藏
- 按元素/索引 添加、刪除,未找到時返回錯誤,查找未找到時返回null或-1
- let obj = new LinkedList()
方法介紹
查找
obj.find(item)
通過item元素內容查找到該元素obj.findIndex(index)
通過index索引查找到該元素obj.findIndexOf(item)
通過item元素內容查找到該元素索引obj.findPrev(item)
通過item元素查找上一個節(jié)點元素
添加
obj.insert(item,newElement)
在item元素后插入新元素obj.push(item)
在鏈表末尾插入item元素obj.insertIndex(index,newElement)
在index索引處插入新元素
刪除
obj.remove(item)
刪除item元素obj.removeIndex(index)
刪除index索引處節(jié)點
其他
obj.size()
返回該鏈表的長度obj.display()
數組形式返回該鏈表,便于觀察,測試obj.reversal()
鏈表順序反轉(遞歸)
方法代碼
鏈表類LinkedList
function LinkedList (...rest) { this._head = new Node('_head') // 鏈表頭節(jié)點 // 如果new時有傳進值,則添加到實例中 if (rest.length) { this.insert(rest[0], '_head') for (let i = 1; i < rest.length; i++) { this.insert(rest[i], rest[i - 1]) } } } LinkedList.prototype.find = find LinkedList.prototype.findPrev = findPrev LinkedList.prototype.findIndex = findIndex LinkedList.prototype.findIndexOf = findIndexOf LinkedList.prototype.push = push LinkedList.prototype.insert = insert LinkedList.prototype.insertIndex = insertIndex LinkedList.prototype.remove = remove LinkedList.prototype.removeIndex = removeIndex LinkedList.prototype.size = size LinkedList.prototype.display = display LinkedList.prototype.reversal = reversal
網站名稱:如何用JavaScript實現功能齊全的單鏈表詳解-創(chuàng)新互聯(lián)
轉載來源:http://fisionsoft.com.cn/article/hcoig.html