【數據結構原理與應用(Golang描述)】② 鏈表

_ _       _            _   _ _     _   
                     | (_)     | |          | | | (_)   | |  
                     | |_ _ __ | | _____  __| | | |_ ___| |_ 
                     | | | '_ \| |/ / _ \/ _` | | | / __| __|
                     | | | | | |   <  __/ (_| | | | \__ \ |_ 
                     |_|_|_| |_|_|\_\___|\__,_| |_|_|___/\__|

1.1 原理

鏈表與數組都很是基礎也很是經常使用,從底層數據結構上看,數組須要一塊連續的內存空間來存儲數據,而鏈表則不須要,鏈表經過指針將一組零散的內存塊串聯起來使用。css

平常中有三種常見的鏈表結構:node

  • 單向鏈表
  • 雙向鏈表
  • 循環鏈表

1.2 分析

對於單鏈表來講,插入和刪除操做的時間複雜度爲 $O(1)$。
雙向鏈表能夠支持 $O(1)$ 時間複雜度下找到前驅節點。數組

1.3 思考

  1. 如何用鏈表來實現LRU緩存淘汰策略?
  2. 瞭解Java中的LinkedHashMap的實現原理,其中用到的是什麼鏈表?
  3. 在實踐中何時選擇數組?何時選擇鏈表?

1.4 LeetCode練習

  1. 合併兩個有序鏈表
  2. 反轉鏈表
  3. K個一組翻轉鏈表
相關文章
相關標籤/搜索