從本篇開始我將用三篇博文寫總結js對鍊錶的操作在本篇博文你會了解到:
建立單鏈錶類:(可能c不太好的不理解為什麼這裡要建立節點類,鍊錶的節點是由資料域和指標域構成的,沒有現成的資料結構可以用來儲存它們。既然是c的兒子,老爹可以用結構和指標建立,那麼js就用類的成員變數來模仿唄)
// 建立乙個節點類
class
lnode
}//鍊錶類
class
linklist
}
這裡我們不管什麼頭插尾插有無頭節點的那一套。我們還是和前倆節相似,實現以下功能。
還是先來體驗套娃娃吧。先實現push,畢竟沒有真正的指標,相信大家對實現指標域的方法還是有一絲絲好奇的吧
push
(e)else
current.next = node;}}
//測試**
let linklist =
newlinklist()
; linklist.
push(1
) linklist.
push(2
) linklist.
push(3
) linklist.
push(4
) console.
log(linklist)
;
看圖:
哈哈,好玩不。我大js雖然沒有指標,但是做不了你兄弟我做你親爸爸,我把你整個節點作為我next屬性的乙個屬性值,物件巢狀
其他功能的實現:
removeat方法
removeat
(index)
else
previous.next = current.next;
}this
.count--
;return current.element;
}else
}
如果有些迷的話,回憶一下c
想起來了吧,沒錯c中這裡的關鍵**是p->next=q->next;
然後再把q指標所指的節點delete掉。
js這裡也是一樣的(醜圖理解)單鏈表的特點就是節點得順著頭節點往下找啊
獲取指定位置的節點
getelementat
(index)
return node;
}else
}
在任意位置插入
// 在任意位置插入
insert
(e, index)
else
this
.count++
;return
true;}
else
}
返回指定元素的位置
// 返回乙個元素的位置
indexof
(e)else
}// 迴圈完鍊錶仍然沒有找到
return-1
;}
刪除乙個指定元素(僅匹配第乙個),返長度,判空
// 刪除指定元素
remove
(e)size()
isempty()
}
js資料結構 鍊錶
大家都用過js中的陣列,陣列其實是一種線性表的順序儲存結構,它的特點是用一組位址連續的儲存單元依次儲存資料元素。而它的缺點也正是其特點而造成,比如對陣列做刪除或者插入的時候,可能需要移動大量的元素。這裡大致模擬一下陣列的插入操作 function insert arr,index,data arr ...
js資料結構 鍊錶
大家都用過js中的陣列,陣列其實是一種線性表的順序儲存結構,它的特點是用一組位址連續的儲存單元依次儲存資料元素。而它的缺點也正是其特點而造成,比如對陣列做刪除或者插入的時候,可能需要移動大量的元素。這裡大致模擬一下陣列的插入操作 function insert arr,index,data arr ...
資料結構 C 版 鍊錶
大家如果有什麼問題,可以給我發email warensoft foxmail.com 下面是c 版鍊錶的實現過程 分為兩個類 1.csarraylistnode 類,用於表示乙個結點 2.csarraylist,用於表示鍊錶本身 下面是這兩個類的檢視 大家可以根據檢視得到這兩個類的基本結構 中有詳細...