线性结构是最基础的一类结构,元素之间是一对一关系。
数组 vs 链表
- 数组:随机访问快(O(1)),中间插入删除慢(O(n))
- 链表:插入删除灵活(已知节点时 O(1)),随机访问慢(O(n))
栈(Stack)
- 规则:后进先出(LIFO)
- 常见操作:push / pop / peek
- 场景:函数调用栈、表达式求值、括号匹配
队列(Queue)
- 规则:先进先出(FIFO)
- 常见操作:offer / poll / peek
- 场景:任务调度、消息缓冲、BFS
选型口诀
- 频繁按下标取值:优先数组
- 频繁中间插删:优先链表
- 只关心“最近一次”:用栈
- 只关心“最早进入”:用队列