《Deep In Go》
  • 介绍
  • Go 语言数据结构
    • 程序实体
    • 命令 & 程序入口
    • 库
    • 数组和切片
    • Map
    • 结构体
    • 函数
    • 指针
    • 循环与判断
    • 接口
    • 错误
    • Panic Recover Defer
  • Go 实现通用数据结构
    • 复杂度分析
    • 链表
      • 单链表
      • 双向链表
      • 循环链表
      • 链表的常见操作
      • 链表的应用(进阶)——LRU 缓存
      • 链表的应用(高级)——LFU 缓存
    • 排序
  • Go 并发机理
    • Channel 信道
    • Mutex 锁
    • Cond 条件变量
    • Automic 原子操作
    • WaitGroup 同步
    • Context 上下文
    • Pool 临时对象池
    • Sync Map 并发安全字典
  • Go 并发编程指南
  • Go I/O
    • Bufio
    • 字符编码
    • Strings 操作
    • Bytes 包
  • Go 系统调用
    • OS API
    • Socket & IPC
  • Go 源码分析
    • 切片
  • Go 语言开发规范
  • Go Test
  • Go FAQ
由 GitBook 提供支持
在本页
  1. Go 实现通用数据结构

链表

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。

上一页复杂度分析下一页单链表

最后更新于5年前