- 鏈表的經典應用場景:LRU緩存淘汰算法
- 決定緩存淘汰的三種策略:先進先出FIFO、最少使用策略LFU、最近最少使用策略LRU
- 書房清理書籍與緩存淘汰策略相同
- 鏈表和數組的區別
- 數組需要一塊連續的內存空間存值,對內存的要求高。如果申請100MB,可是內存中沒有連續的足夠的存儲空間,即便剩餘內存大於100MB還是會申請失敗
- 鏈表並不需要一塊連續的內存空間,他通過“指針”將一組零散的內存塊串聯起來使用,所以同等情況下如果我們申請的是100MB大小的鏈表,沒問題
- 單鏈表,雙向鏈表,循環鏈表
- 後繼指針:內存塊被稱爲鏈表的結點,爲了將所有的結點串起來,每個鏈表的結點除了存儲數據之外還需要記錄鏈上的下一個結點的地址,記錄鏈上的下一個結點的地址的指針稱爲後繼指針(next)
- 頭結點用來記錄鏈表的基地址,可以通過他遍歷得到整條鏈表。
- 尾結點指向一個空地址Null,表示爲最後一個結點
- 鏈表的插入和刪除非常便捷
- 隨機訪問並不高效需要按照指針依次遍歷各結點
- 就像是隊伍,每個人只知道自己後面的人是誰,就得一個一個的往下數才能知道第n個人在哪兒
- 循環鏈表是一種特殊的單鏈表。
- 跟單鏈表的區別就在尾結點。他的尾結點指針是指向鏈表的頭結點,手尾相連
- 和單鏈表相比,優點是從鏈尾到鏈頭比較方便。當處理具有環形結構特點的數據時就非常便捷,比如約瑟夫問題。
- 雙向鏈表,多一個指向前面結點的前驅指針
- 兩個指針佔用的空間會比單鏈表多
- 支持雙向遍歷,操作很靈活
鏈表複習(一)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.