链表及链式栈、链式队列

一、指针(Pointer)

  1. 指针的精确定义

    • 指针是存储内存地址的变量
    • 通过指针可以间接访问和操作内存中的数据
    • 指针类型决定了指针解引用时的解释方式
  2. 指针操作要点

    • & 取地址运算符
    • * 解引用运算符
    • 指针算术运算(数组遍历时常用)

二、链表优化

  1. 链表介绍优化

(1) 线性表 vs 链表的比较

特性 顺序表(数组) 链表
存取方式 随机存取 顺序存取
插入/删除效率 O(n) O(1)已知位置
空间连续性 连续 不连续
空间利用率 高(无额外开销) 较低(有指针开销)

(2) 链表类型补充

  • 单链表:每个结点包含数据和指向下一结点的指针
  • 双向链表:结点包含前驱和后继指针,支持双向遍历
  • 循环链表:尾结点指向头结点形成环状结构

三、链式栈优化

  1. 实现要点
  • 只需要维护一个top指针
  • 不需要头结点,栈顶直接指向第一个元素
  • 空栈时top为nullptr

四、链式队列优化

  1. 实现要点
  • 维护front和rear两个指针
  • 空队列时front和rear都为nullptr
  • 出队时更新front,入队时更新rear

五、最佳实践建议

  1. 边界条件检查:始终检查空链表/栈/队列情况
  2. 内存管理:每次new后要有对应的delete
  3. 错误处理:对非法操作应有处理机制(如空栈pop)
  4. 代码复用:可以考虑使用模板实现通用数据结构
  5. 调试辅助:实现size()/isEmpty()等辅助方法

六、复杂度分析

操作 链表 链式栈 链式队列
插入/入栈/入队 O(1) O(1) O(1)
删除指定元素 O(n) - -
删除/出栈/出队 O(1) O(1) O(1)
访问指定位置 O(n) - -
空间开销 O(n) O(n) O(n)
posted @ 2025-05-15 20:21  Jason227  阅读(19)  评论(0)    收藏  举报