【数据结构原理与应用(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个一组翻转链表
相关文章
相关标签/搜索